基于其他列值删除重复项(Python)

2024-09-28 03:25:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个3列的数据框。我想根据其他列中的值在A列中删除重复项。我不知疲倦地寻找,找不到这样的解决办法

例如:

^{tb1}$

基本上,我只想在其余列都是nan的情况下删除一个副本。否则,副本可以保留

期望输出:

^{tb2}$

Family2和Family3保留在df中,因为它们没有重复项,即使两列都是nan


Tags: 数据df副本情况nan解决办法tb2tb1
2条回答

尝试使用双布尔值,这将为所有重复项返回true&;对于['A']之后所有为空的任何列,为true。如果这两个条件都满足,我们将使用~运算符来排除这一点,该运算符反转布尔值

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

你不是很清楚。如果B列和C列都为NaN,我怀疑您希望删除A列中的任何重复项。如果是,请尝试

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

相关问题 更多 >

    热门问题