比较pd.Series并在该系列不包含None时得到异常结果

时间:2018-11-29 23:19:47

标签: python python-3.x pandas

我想知道为什么将两个相同的序列与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

1 个答案:

答案 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