该问题与申请有关np.mean
到一个系列。让我们看几个例子:
def nok_mean(x):
return x.mean()
df.agg({'a': nok_mean})
a 13.5
dtype: float64
这按预期工作,因为您使用的是 pandas 版本的平均值,它可以应用于系列或数据框:
df['a'].agg(nok_mean)
df.apply(nok_mean)
让我们看看当np.mean
应用于一系列:
def nok_mean1(x):
return np.mean(x)
df['a'].agg(nok_mean1)
df.agg({'a':nok_mean1})
df['a'].apply(nok_mean1)
df['a'].apply(np.mean)
全部返回
0 0.0
1 3.0
2 6.0
3 9.0
4 12.0
5 15.0
6 18.0
7 21.0
8 24.0
9 27.0
Name: a, dtype: float64
当你申请时np.mean
到数据框它按预期工作:
df.agg(nok_mean1)
df.apply(nok_mean1)
a 13.5
b -8.0
dtype: float64
为了得到np.mean
要按预期使用函数,请传递 x 的 ndarray:
def nok_mean2(x):
return np.mean(x.values)
df.agg({'a':nok_mean2})
a 13.5
dtype: float64
我猜这一切都与apply
, 这就是为什么df['a'].apply(nok_mean2)
返回属性错误。
我猜here在源代码中