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