![](/img/trans.png)
[英]Drop pandas dataframe rows AND columns in a batch fashion based on value
[英]Drop rows in pandas dataframe based on columns value
我有一個像這樣的數據框:
cols = [ 'a','b']
df = pd.DataFrame(data=[[NaN, -1, NaN, 34],[-32, 1, -4, NaN],[4,5,41,14],[3, NaN, 1, NaN]], columns=['a', 'b', 'c', 'd'])
我想檢索所有行,當列'a'和'b'為非負數時,但是如果其中任何一個或全部丟失,我想保留它們。
結果應該是
a b c d
2 4 5 41 14
3 3 NaN 1 NaN
我已經嘗試過了,但是沒有給出預期的結果。
df[(df[cols]>0).all(axis=1) | df[cols].isnull().any(axis=1)]
IIUC,您實際上想要
>>> df[((df[cols] > 0) | df[cols].isnull()).all(axis=1)]
a b c d
2 4 5 41 14
3 3 NaN 1 NaN
現在,您會得到“如果它們都是肯定的”或“任何都不為空”。 您想要“如果全部都是(正數或null)”。 (將非負數> 0
替換為>=0
)
由於NaN不是正數,我們可以通過翻轉條件來簡化,並使用類似
>>> df[~(df[cols] <= 0).any(axis=1)]
a b c d
2 4 5 41 14
3 3 NaN 1 NaN
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.