【发布时间】:2020-04-14 04:41:08
【问题描述】:
在一个特定的数据框中,我有一个名为“Wind”的列,它提供了德国每年的风能产量。 在序列开始时,产生式非常小,以至于在 DF 中写入 NaN,没有可用数据。我只有从 2010 年开始的风数据。
用于复制和粘贴的数据链接: API_link_to_data='https://raw.githubusercontent.com/jenfly/opsd/master/opsd_germany_daily.csv'
energyDF = pd.read_csv(API_link_to_data)
现在下面的代码会比较两列元素:
energyDF.loc[:,'Wind'] == energyDF['Wind']
我希望结果是 [True, True, True,....,True]
但事实并非如此。 对于 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)
然后
energyDF.loc[:,'Wind'] == energyDF['Wind']
是一个完整的列表。
谁能解释一下?
谢谢
【问题讨论】:
-
这是意料之中的。
NaNs 不等于任何东西。 Imo 最好的方法是用数据框中不存在的值填充na,然后检查相等性 -
wooooohhh 不知道 nan 不等于任何东西。
-
@AsishM。提出一个解决方案,我会投赞成票。
标签: python pandas numpy boolean nan