聚合或应用于列表或数组时,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
当涉及 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