gpt4 book ai didi

Python pandas 删除具有列值 "NaN"的重复行

转载 作者:行者123 更新时间:2023-12-05 08:40:48 25 4
gpt4 key购买 nike

需要包含 NaN 值但也是重复的行。例如这张表:

    A   B   C
0 foo 2 3
1 foo nan nan
2 foo 1 4
3 bar nan nan
4 foo nan nan

应该变成这样:

    A   B   C
0 foo 2 3
2 foo 1 4
3 bar nan nan

我该怎么做?

最佳答案

使用boolean indexing :

df = df[~df['A'].duplicated(keep=False) | df[['B','C']].notnull().any(axis=1)]
print (df)
A B C
0 foo 2.0 3.0
2 foo 1.0 4.0
3 bar NaN NaN

解释:

测试列 A 是否重复 - duplicated使用 ~ 进行反转 bool 掩码:

print (~df['A'].duplicated(keep=False))
0 False
1 False
2 False
3 True
4 False
Name: A, dtype: bool

检查 B,C 列中的非缺失值:

print (df[['B','C']].notnull())
B C
0 True True
1 False False
2 True True
3 False False
4 False False

然后每行至少有一个 True DataFrame.any :

print (df[['B','C']].notnull().any(axis=1))
0 True
1 False
2 True
3 False
4 False
dtype: bool

按位| 链接在一起OR:

print (~df['A'].duplicated(keep=False) | df[['B','C']].notnull().any(axis=1))
0 True
1 False
2 True
3 True
4 False
dtype: bool

关于Python pandas 删除具有列值 "NaN"的重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53413077/

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