gpt4 book ai didi

python - 与 NaN 相等的逐元素比较

转载 作者:太空狗 更新时间:2023-10-29 21:18:04 25 4
gpt4 key购买 nike

如果我运行以下代码:

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')。

关于python - 与 NaN 相等的逐元素比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52103594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com