python - 使用 Python pandas 检查列是否包含相同的值或 NaN

标签 python pandas dataframe equals

如果对于列中的每一行,它们仅包含与其他列中的元素相同或为 NaN 的元素,我想要一个返回 True 的函数。

例子:

A  B  C
1  1  NaN
4  NaN  NaN
2  2  2

函数应该在这个输入上返回True

A  B  C
1  2  1
3  3  3

该函数应在此输入中返回 False。 (因为 1 和 2 or 不相同,而且两者都不是 NaN)

编辑:

==equals() 不起作用,因为:

  1. 它认为 NaN 不同于 NaN
  2. 如果我告诉 pandas 不要这样做,NaN 仍然算作不同于 4。

最佳答案

这里的想法是在排除 NAN 值后计算数据框中每一行的唯一值,如果计数等于 1 这意味着您的条件是fulfilled ,否则返回 false

df.apply( lambda x: len(x[-x.isnull()].unique()) == 1 , axis = 1).all()

然后使用 all() 仅当所有行都满足条件时才返回 true

关于python - 使用 Python pandas 检查列是否包含相同的值或 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33411055/

相关文章:

python - 如何使用python以相同的顺序再次合并两个分离的数据帧

r - 使用 R 中另一个数据帧的日期时间过滤和汇总来自一个数据帧的数据

python - Fastapi/Tortoise 早期模型初始化

python - 在 'def' , 'if' 等之后自动插入冒号

python - 应用函数不适用于数据框列

r - 在向量列表中,将每个向量转换为字符串,然后转换为 R 中的数据帧

python - 用 Pandas 数据框中的空列表替换 NaN

Python安装在多个路径中,这样不好吗?

python - 如何删除 pandas 中的 nan 值?

python - pandas 列值合并