如果对于列中的每一行,它们仅包含与其他列中的元素相同或为 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()
不起作用,因为:
- 它认为 NaN 不同于 NaN
- 如果我告诉 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/