聚合或应用于列表或数组时,numpy sum min max 函数的不同行为

Different behaviour of numpy sum min max functions when aggregating or when applied to list or array

当涉及 nan 值时,将相同的 numpy 函数用作 groupby 的聚合函数或应用于相同的值列表时,我看到了不同的行为。

这适用于 np.sum np.min np.max 和 np.mean 作为聚合函数的行为看起来与使用 np.nansum、np、nanmin 等相同

例如

import pandas as pd
import numpy as np
xx = pd.DataFrame([['A', 1.,  2.,      3.],
                   ['A', 3.,  np.nan,  4.],
                   ['B', 5.,  6.,      np.nan],
                   ['B', 7.,  8.,      9.]])

xx.groupby(0).agg(np.sum)

给予

       1     2     3
0           
A    4.0   2.0   7.0
B   12.0  14.0   9.0

但是np.array([np.nan,9.]).sum()或者 np.sum(np.array([np.nan,9]))np.sum([np.nan,9]) 他们都输出 nan

我本以为聚合函数也会产生 nan,而我必须使用 np.nansum

生成输出

pandas 0.24.2,numpy 1.16.2

差异来自 pandas 行为而不是 numpy.sum()np.NaN 被自动排除在 pandas.groupby

import pandas as pd
import numpy as np
xx = pd.DataFrame([['A', np.nan],
                   ['A', 4.],
                   ['B', 1],
                   ['B', 2]])

xx.groupby(0).count()

输出

   1
0   
A  1
B  2