这里的区别与两种不同类型的实现方式无关any
。事实上,文档pandas.Series.any
和numpy.ndarray.any
两者都明确表示“参考numpy.any
完整文档”,因为它们实际上都只是调用numpy.any
.
不同之处在于您在这两种情况下具有不同的 dtype。如果可能,从不同的数字类型隐式或显式创建 NumPy ndarray 会强制类型相同,因此您最终得到float64
,而 Pandas 系列将类型分开,这意味着您最终得到object
.
如果你明确指定dtype
,你可以看到他们做同样的事情:
>>> a = np.array([False, np.nan])
>>> a
array([ 0., nan])
>>> a.dtype
float64
>>> a.any()
True
>>> a = np.array([False, np.nan], dtype=object)
>>> a
array([False, nan], dtype=object)
>>> a.any()
nan
>>> p = pd.Series([False, np.nan])
>>> p
0 False
1 NaN
>>> p.dtype
dtype('O')
>>> p.any()
nan
>>> p = pd.Series([False, np.nan], dtype=np.float64)
>>> p
0 0
1 NaN
>>> p.any()
True