簡體   English   中英

根據列值在熊貓數據框中刪除行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM