gpt4 book ai didi

python - 比较 pandas/numpy 中的 NaN 列

转载 作者:行者123 更新时间:2023-12-05 01:20:02 26 4
gpt4 key购买 nike

我想比较数据框中可能包含 NaN 值的两列。

基于 link我尝试调整我的代码,但遇到以下问题:

(s1[s1.notnull()] == s2[s2.notnull()]).all()

我该如何调整这段代码,这样我就不需要从数据框中提取 s1 和 s2 作为系列,而是可以直接应用它:

import pandas as pd
import numpy as np

mydata = [{'SystemA': 1.78, 'SystemB':1.78},
{'SystemA': 2.5, 'SystemB':2.5},
{'SystemA': np.nan, 'SystemB':np.nan}]

df = pd.DataFrame(mydata)
print(df)

# does not return single True or False
# gives wrong result when e.g. 2.5 is changed to 2.6 in just one column
c = (df['SystemA'].notnull() == df['SystemB'].notnull()).all()

print('\nc:',c)

最佳答案

equals 方法忽略了 nans:

>>> df
SystemA SystemB
0 1.78 1.78
1 2.50 2.50
2 NaN NaN
>>> (df["SystemA"] == df["SystemB"]).all()
False
>>> df["SystemA"].equals(df["SystemB"])
True
>>> df.iloc[1,1] = 2.6
>>> df
SystemA SystemB
0 1.78 1.78
1 2.50 2.60
2 NaN NaN
>>> df["SystemA"].equals(df["SystemB"])
False

虽然它也检查 dtype 是否相等,所以如果你有一系列整数和一系列 float ,它会说它们不相等,即使你有

>>> ((df.SystemA == df.SystemB) | (df.SystemA.isnull() & df.SystemB.isnull())).all()
True

这对您来说可能是问题,也可能不是问题。

关于python - 比较 pandas/numpy 中的 NaN 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35419778/

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