熊猫系列any()vs all()

时间:2016-10-14 21:29:28

标签: python pandas series

>>> s = pd.Series([float('nan')])
>>> s.any()
False
>>> s.all()
True

这不奇怪吗?关于any的文档(返回请求轴上的任何元素是否为True)和all(返回所有元素在请求的轴上是否为True)是相似的,但行为上的差异似乎没有意义对我来说。

是什么给出了?

1 个答案:

答案 0 :(得分:3)

pandas通常忽略NaN的问题似乎是一个问题,除非告知不要:

>>> pd.Series([float('nan')]).any()
False
>>> pd.Series([float('nan')]).all()
True
>>> pd.Series([float('nan')]).any(skipna=False)
True
>>> 

注意,NaN是假的:

>>> bool(float('nan'))
True

另请注意:这与内置anyall一致。空的iterables为True返回all,为False返回anyHere is a relevant question on that topic.

有趣的是,默认行为似乎与文档不一致:

  

skipna:boolean,默认为True           排除NA / null值。如果整行/列为NA,则为结果           将是NA

但请注意:

>>> pd.Series([float('nan')]).any(skipna=None)
False
>>> pd.Series([float('nan')]).any(skipna=True)
False
>>> pd.Series([float('nan')]).any(skipna=False)
True
>>>