我想知道为什么将两个相同的序列与None
值进行比较会返回False:
pd.Series(['x', 'y', None]) == pd.Series(['x', 'y', None])
0 True
1 True
2 False
dtype: bool
我希望所有结果都是正确的。如果我从系列中创建一个数组,并进行比较,则会得到预期的结果:
pd.Series(['x', 'y', None]).values == pd.Series(['x', 'y', None]).values
array([ True, True, True])
为什么两个None
相同的序列彼此不相等?我想念什么吗?
我希望np.nan
会出现这种情况,因为np.nan != np.nan
;但是,None == None
答案 0 :(得分:3)
这是by design:
请参阅警告框:http://pandas.pydata.org/pandas-docs/stable/missing_data.html
这是相当早以前完成的,以使行为为null 一致,因为它们不相等。这将
None
和np.nan
相等(尽管与python不一致,但一致 numpy)立足。所以这不是错误,而是跨越2条约定的结果。
我认为文档可能会有所增强。
对于包含空值的级数相等,请使用pd.Series.equals
:
pd.Series(['x', 'y', None]).equals(pd.Series(['x', 'y', None])) # True