[英]Remove duplicates from a dataframe based on condition?
我有一個帶有列name
、 cost
和status
的df
。
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
因為如果不相等的值進行比較fail
與GroupBy.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.