Pandas 系列 any() 与 all()
Pandas Series any() vs all()
>>> s = pd.Series([float('nan')])
>>> s.any()
False
>>> s.all()
True
是不是很奇怪? any (Return whether any element is True over requested axis) and all(Return 是否所有元素在请求的轴上都为真)的文档类似,但行为差异对我来说似乎没有意义。
什么给了?
这似乎是 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
另请注意:这与内置的any
和all
一致。 all
的空迭代 return True
和 any
的 False
。 Here is a relevant question on that topic.
有趣的是,默认行为似乎与文档不一致:
skipna : boolean, default True
Exclude NA/null values. If an entire row/column is NA, the result
will be 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
>>>
>>> s = pd.Series([float('nan')])
>>> s.any()
False
>>> s.all()
True
是不是很奇怪? any (Return whether any element is True over requested axis) and all(Return 是否所有元素在请求的轴上都为真)的文档类似,但行为差异对我来说似乎没有意义。
什么给了?
这似乎是 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
另请注意:这与内置的any
和all
一致。 all
的空迭代 return True
和 any
的 False
。 Here is a relevant question on that topic.
有趣的是,默认行为似乎与文档不一致:
skipna : boolean, default True Exclude NA/null values. If an entire row/column is NA, the result will be 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
>>>