ここでの違いは、2 つの異なる型の実装方法とは関係ありませんany
。実際、pandas.Series.any
との両方のドキュメントでは、 「完全なドキュメントについては をnumpy.ndarray.any
参照してください」と明示的に述べられています。numpy.any
numpy.any
違いは、2 つのケースで 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