这个应该是pandas的版本问题 ,我的是v1.0.5,也会出现这个问题,如下面的代码所示:
>>> import pandas as pd
>>> data=pd.DataFrame({'name':['x','y','x','y','z'],'sex':['f','m','f','f','m'],'age':[25,26,45,67,30]})
>>> data
name sex age
0 x f 25
1 y m 26
2 x f 45
3 y f 67
4 z m 30
>>> data.groupby('name')['age'].agg({'sums':'sum'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Applications/anaconda3/lib/python3.6/site-packages/pandas/core/groupby/generic.py", line 253, in aggregate
ret = self._aggregate_multiple_funcs(func)
File "/Applications/anaconda3/lib/python3.6/site-packages/pandas/core/groupby/generic.py", line 294, in _aggregate_multiple_funcs
raise SpecificationError("nested renamer is not supported")
pandas.core.base.SpecificationError: nested renamer is not supported
将代码改成下面的方式就可以了
- 根据单列聚合后进行单个计算
>>> data.groupby('name')['age'].agg([('sums',sum)])
sums
name
x 70
y 93
z 30
### 看见官方文档还有这种写法
>>> data.groupby('name').agg(age_sum = ('age','sum'))
age_sum
name
x 70
y 93
z 30
>>>
- 根据单列聚合后进行多个计算
>>> data.groupby('name')['age'].agg([('sums','sum'),('means','mean')])
sums means
name
x 70 35.0
y 93 46.5
z 30 30.0
>>> data.groupby('name').agg(age_sum = ('age','sum'),age_mean=('age','mean')
... )
age_sum age_mean
name
x 70 35.0
y 93 46.5
z 30 30.0
>>>
- 根据多列聚合后进行多个计算
>>> data.groupby(['name','sex']).agg(age_sum = ('age','sum'),age_mean=('age','mean'))
age_sum age_mean
name sex
x f 70 35
y f 67 67
m 26 26
z m 30 30
>>>