gpt4 book ai didi

python - 如何删除具有 NaN 的重复行并保留不具有 NaN 的行

转载 作者:行者123 更新时间:2023-11-28 22:13:04 25 4
gpt4 key购买 nike

我有一个数据框,例如:

   A   B   C   D   E   F   G
0 9 34 1 1 Nan 9 3
1 Nan 34 0 9 Nan 0 2
2 0 8 Nan 3 9 11 0
3 0 8 15 3 9 11 0
4 Nan 6 1 3 Nan 2 3
5 1 6 1 3 44 2 3

我想检查哪些行在 B、D 和 G 列中有重复值。如您所见,第 2 行和第 3 行具有重复的值,第 4 行和第 5 行也是如此。我必须删除重复的行,但我想删除具有 Nan 值的行(2 和 4)。

我试过 df.dropna() 方法,但它只有选项

 keep = 'last', 
keep = 'first' or
keep='False',

这些都不能解决我的问题。

我的预期输出是

   A   B   C   D   E   F   G
0 9 34 1 1 Nan 9 3
1 Nan 34 0 9 Nan 0 2
3 0 8 15 3 9 11 0
5 1 6 1 3 44 2 3

我该怎么做?谢谢

最佳答案

我不是 pandas 专家,但这是实现此目的的一种方法:

subset = df[['B', 'D', 'G']]

to_keep = df[~subset.duplicated(keep=False)]

A B C D E F G
0 9 34 1 1 NaN 9 3
1 NaN 34 0 9 NaN 0 2

to_keep.append(df[subset.duplicated(keep=False)].dropna(), ignore_index=True)

A B C D E F G
0 9 34 1 1 NaN 9 3
1 NaN 34 0 9 NaN 0 2
2 0 8 15 3 9 11 0
3 1 6 1 3 44 2 3

如果你想保持索引不变,删除ignore_index标志

关于python - 如何删除具有 NaN 的重复行并保留不具有 NaN 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54295108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com