DataFrame groupby+agg出现SpecificationError: nested renamer is not supported的错误

这个应该是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
>>> 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值