簡體   English   中英

根據其他列值刪除重復項(Python)

[英]Dropping duplicates based on other column values (Python)

我有一個 3 列的 dataframe。 我想根據其他列中的值刪除列 A 中的重復項。 我不知疲倦地搜索,找不到這樣的解決方案。

例子:

一個 C
家庭1
家庭1 1234
家庭1 1245
家庭1 3456 78787
家庭2
家庭3

基本上,只有當列的 rest 都是 nan 時,我才想刪除副本。 否則,副本可以保留。

所需的 output:

一個 C
家庭1 1234
家庭1 1245
家庭1 3456 78787
家庭2
家庭3

Family2 和 Family3 保留在 df 中,因為它們沒有重復項,即使兩列都是 nan

你不是很清楚。 如果 B 列和 C 均為 NaN,我懷疑您想刪除 A 列中的任何重復項。 如果是這樣,請嘗試;

df[~(df.A.duplicated(keep=False)&(df.B.isna()&df.C.isna()))]

嘗試雙 boolean,這對於所有重復項返回 true,對於 ['A'] 之后的所有列都為空返回 true。 如果這兩個條件都滿足,我們將使用~運算符排除這個,它反轉 boolean。

df[~(df.duplicated(subset=['A'],keep=False) & df.iloc[:,1:].isna().all(1))]

          A     B        C
1  Family1    NaN     1234
2  Family1   1245      NaN
3  Family1   3456    78787
4  Family2    NaN      NaN
5  Family3    NaN      NaN

暫無
暫無

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

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