簡體   English   中英

如何使用列表有條件地從 Pandas DataFrame 中刪除重復項

[英]How to Conditionally Remove Duplicates from Pandas DataFrame with a List

我有一個df ,想刪除ID上的所有重復項。

       Name     Symbol         ID
0   ZOO INC     Remove  88579Y101
1   Zoo Inc        ZZZ  88579Y101
2     A Inc        AAA  90138A103
3     a inc.    Remove  90138A103
4    2U Inc       TWUO  90214J101
5      Keep     Remove  111111111

但我只想刪除Symbol == 'Remove'的重復行。 輸出應如下所示:

       Name     Symbol         ID
0   Zoo Inc        ZZZ  88579Y101
1     A Inc        AAA  90138A103
2    2U Inc       TWUO  90214J101
3      Keep     Remove  111111111

我不能使用result_df = df.drop_duplicates(subset=['ID'], keep='first') (或keep='last' ),因為數據集沒有特定的模式。 首先按字母順序排序也無濟於事。

雖然我知道我可以用NaN替換所有Remove ,然后使用此處提供的解決方案,但我正在尋找替代解決方案,因為我最終可能需要傳遞一個字符串列表。

Pandas 是否支持以下內容: result_df = df.drop_duplicates(subset=['ID'], keep=(df['Symbol'] != 'Remove'))

Series.duplicatedkeep=False用於所有欺騙,將鏈與 compare 用於Remove ,通過|鏈接在一起對於按位OR和通過~反轉掩碼:

m1 = df['ID'].duplicated(keep=False)
m2 = (df['Symbol'] == 'Remove')

df = df[~(m1 & m2)]

print (df)
      Name Symbol         ID
1  Zoo Inc    ZZZ  88579Y101
2    A Inc    AAA  90138A103
4   2U Inc   TWUO  90214J101
5     Keep     Remove  111111111

暫無
暫無

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

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