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

时间:2019-04-24 08:44:59

标签: python pandas numpy nan aggregation

当涉及到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

1 个答案:

答案 0 :(得分:1)

区别来自大熊猫的行为,而不是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