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

Use Python pandas to check if coloumns contain identical values or NaN

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

示例:

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

函数应该return True 这个输入

A  B  C
1  2  1
3  3  3

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

编辑:

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

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

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

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

然后使用 all() 即 return true 仅当所有行都满足条件