Python 访问带有loc和方括号的柱比较元素

Python 访问带有loc和方括号的柱比较元素,python,pandas,numpy,boolean,nan,Python,Pandas,Numpy,Boolean,Nan,在一个特定的数据框架中,我有一个名为“风能”的专栏,它提供了德国每年的风能产量。 在序列开始时,产量非常小,以至于写入DF中,没有可用的数据。从2010年开始,我才有风的数据 用于复制和粘贴的数据链接: API链接到数据=“” 现在,以下代码将按元素比较两列: energyDF.loc[:,'Wind'] == energyDF['Wind'] 我希望结果是[真的,真的,真的,…,真的] 但事实并非如此。 对于NaN值,结果为False 对于所有NaN值,结果都是假的,即使在元素方面它们是相同

在一个特定的数据框架中,我有一个名为“风能”的专栏,它提供了德国每年的风能产量。 在序列开始时,产量非常小,以至于写入DF中,没有可用的数据。从2010年开始,我才有风的数据

用于复制和粘贴的数据链接: API链接到数据=“”

现在,以下代码将按元素比较两列:

energyDF.loc[:,'Wind'] == energyDF['Wind']
我希望结果是[真的,真的,真的,…,真的]

但事实并非如此。 对于NaN值,结果为False

对于所有NaN值,结果都是假的,即使在元素方面它们是相同的:

print(wind_col1[0])
print(wind_col2[0])
print(wind_col1[0] == wind_col2[0])
print(wind_col1[0] == np.nan)
print(wind_col2[0] == np.nan)
结果: 楠 楠 假的 假的 假的

预期: 楠 楠 真的 真的 真的

对整个框架进行以下操作后:

energyDF=energyDF.fillna(0)
然后

是一个充满真理的列表

有人能解释一下吗


谢谢

NaN
s不等于他们自己。见:

至于检查energyDF.loc[:,'Wind']==energyDF['Wind'].

您可以用一个值(最好是序列中没有出现的值)填充两边,然后检查两者是否完全相同

例如:

>>> df
    ID Col1
0  1.0   AD
1  NaN   BC
2  3.0   CE
>>> (df.loc[:, 'ID'] == df['ID']).all()
False
>>> (df.loc[:, 'ID'].fillna("Non-existent") == df['ID'].fillna("Non-existent")).all()
True

这是意料之中的
NaN
s不等于任何值。在我看来,最好的方法是用数据帧中不存在的值填充NA,然后检查EqualityWoooohh不知道它不等于任何东西。@AsishM。提出一个解决方案,我将投赞成票。
energyDF.loc[:,'Wind'] == energyDF['Wind']
>>> df
    ID Col1
0  1.0   AD
1  NaN   BC
2  3.0   CE
>>> (df.loc[:, 'ID'] == df['ID']).all()
False
>>> (df.loc[:, 'ID'].fillna("Non-existent") == df['ID'].fillna("Non-existent")).all()
True