我有一個資料框
In = pd.DataFrame([
#["A", "B", "C", "D","E","F"]
["V", 13, 0.0, 45, 65, 32],
["W", 23, 45, 0.06, 78, 33],
["X", 12, 37, 53, 0.00, 0.9],
["Y", 12, 34, 56, 0.03, 36],
["Z",0.07, 31, 46, 87, 33]
], columns=["A","B","C","D","E","F"])
我只想保留值大于 1 的列。并且此操作應排除某些行。在這種情況下,A 列的 W 和 Z 行。
預期輸出:
Out = pd.DataFrame([
#["A","B", "D"]
["V", 13, 45],
["W", 23, 0.06],
["X", 12, 53],
["Y", 12, 56],
["Z",0.07, 46]
],columns=["A","B","D"])
怎么做?
uj5u.com熱心網友回復:
創建一個布爾掩碼:首先隱藏行 W 和 Z,然后保留所有值大于 0 的列。
mask = In[~In['A'].isin(['W', 'Z'])].select_dtypes('number').gt(1).all()
Out = In[['A'] mask[mask].index.tolist()]
輸出:
>>> Out
A B D
0 V 13.00 45.00
1 W 23.00 0.06
2 X 12.00 53.00
3 Y 12.00 56.00
4 Z 0.07 46.00
>>> mask
B True
C False
D True
E False
F False
dtype: bool
uj5u.com熱心網友回復:
使用 loc 訪問器進行切片。為此,請將列設定A為索引。
單行代碼
In.set_index('A').loc[:,In.set_index('A').loc[['W','Z']].le(1).any()]
我們可以讓它整潔
s = In.set_index('A')
s.loc[:,s.loc[['W','Z']].le(1).any()].reset_index()
A B D
0 V 13.00 45.00
1 W 23.00 0.06
2 X 12.00 53.00
3 Y 12.00 56.00
4 Z 0.07 46.00
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/420508.html
標籤:
上一篇:如何使用`fixture`和`parametrize`為pytest測驗設定環境變數
下一篇:誰能幫我解決我的鏈表錯誤?
