使用 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()
不起作用,因为:
- 它将 NaN 视为不同于 NaN
- 如果我告诉 pandas 不要这样做,NaN 仍然与 4 不同。
这里的想法是在排除 NAN
值后计算数据框中每一行的唯一值,如果计数等于 1
这意味着您的条件已满足,否则return假
df.apply( lambda x: len(x[-x.isnull()].unique()) == 1 , axis = 1).all()
然后使用 all()
即 return true
仅当所有行都满足条件
我想要一个函数 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()
不起作用,因为:
- 它将 NaN 视为不同于 NaN
- 如果我告诉 pandas 不要这样做,NaN 仍然与 4 不同。
这里的想法是在排除 NAN
值后计算数据框中每一行的唯一值,如果计数等于 1
这意味着您的条件已满足,否则return假
df.apply( lambda x: len(x[-x.isnull()].unique()) == 1 , axis = 1).all()
然后使用 all()
即 return true
仅当所有行都满足条件