簡體   English   中英

根據條件從數據框中刪除重復項?

[英]Remove duplicates from a dataframe based on condition?

我有一個帶有列namecoststatusdf

            name        cost      status
    0       alex        5          pass
    1       alex        6          pass
    2       alex        7          pass
    3       marcus      23         pass
    4       marcus      78         fail
    5       anthony     1          pass
    6       paul        89         pass
    7       paul        23         pass
    8       paul        10         fail
    9       paul         8         pass

如果name列記錄之一具有status = fail 我正在嘗試刪除整個用戶的記錄。

            name        cost      status
    0       alex        5          pass
    1       alex        6          pass
    2       alex        7          pass
    3       anthony     1          pass

使用Series.ne因為如果不相等的值進行比較failGroupBy.transform測試,如果所有的True每組S按GroupBy.all和過濾器boolean indexing

df = df[df['status'].ne('fail').groupby(df['name']).transform('all')]
print (df)
      name  cost status
0     alex     5   pass
1     alex     6   pass
2     alex     7   pass
5  anthony     1   pass

或者獲取status相同fail所有名稱,並通過Series.isin使用~過濾所有沒有此類名稱的名稱的反向掩碼:

df = df[~df['name'].isin(df.loc[df['status'].eq('fail'), 'name'])]
print (df)
      name  cost status
0     alex     5   pass
1     alex     6   pass
2     alex     7   pass
5  anthony     1   pass

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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