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