>>> s = pd.Series([float('nan')])
>>> s.any()
False
>>> s.all()
True
这不奇怪吗?关于any的文档(返回请求轴上的任何元素是否为True)和all(返回所有元素在请求的轴上是否为True)是相似的,但行为上的差异似乎没有意义对我来说。
是什么给出了?
答案 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
另请注意:这与内置any
和all
一致。空的iterables为True
返回all
,为False
返回any
。 Here 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
>>>