如果我运行以下代码:
dft1 = pd.DataFrame({'a':[1, np.nan, np.nan]})
dft2 = pd.DataFrame({'a':[1, 1, np.nan]})
dft1.a==dft2.a
结果是
0 True
1 False
2 False
Name: a, dtype: bool
我怎样才能使结果成为
0 True
1 False
2 True
Name: a, dtype: bool
即, np.nan == np.nan 计算结果为 True。
我认为这是基本功能,我一定是在问重复的问题,但我花了很多时间在 SO 或 Google 中搜索,但找不到它。
想不出一个已经为你做这件事的函数(奇怪),所以你可以自己做:
dft1.eq(dft2) | (dft1.isna() & dft2.isna())
a
0 True
1 False
2 True
请注意括号的存在。在 pandas 中使用重载的位运算符时,需要注意优先级。
另一种选择是使用np.nan_to_num
,如果您确定两个 DataFrame 的索引和列相同,则此结果有效:
np.nan_to_num(dft1) == np.nan_to_num(dft2)
array([[ True],
[False],
[ True]])
np.nan_to_num
用一些填充值填充 NaN(0 表示数字,'nan' 表示字符串数组)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)