You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中groupby()与agg()报错:计算各州CENSUS2010POP的总和与均值

解决Pandas报错"nested renamer is not supported"的方案

嗨,这个问题我之前也踩过坑!报错的核心原因是Pandas版本兼容性问题:从Pandas 0.20.0版本开始,agg()方法不再支持用字典来指定聚合函数与新列名的映射,这就是你看到"nested renamer is not supported"的根源。

下面给你两种可行的解决办法,都能实现按STNAME分组计算CENSUS2010POP的总和与均值:

方法1:使用元组列表指定列名与聚合函数

这是当前Pandas版本推荐的标准写法,直接把(新列名, 聚合函数)作为元组放到列表里传给agg():

import numpy as np
import pandas as pd

# 先还原你的census DataFrame(如果已经存在可跳过这部分)
data = {
    'SUMLEV': [50]*9,
    'REGION': [3,3,3,4,4,4,4,4,4],
    'COUNTY': [1,3,5,3,5,7,21,23,25],
    'STNAME': ['Alabama','Alabama','Alabama','Arizona','Arizona','Arizona','California','California','California'],
    'CTYNAME': ['Autauga County','Baldwin County','Barbour County','Cochise County','Coconino County','Gila County','Glenn County','Humboldt County','Imperial County'],
    'CENSUS2010POP': [54571,182265,27457,131346,134421,53597,28122,134623,174528],
    'ESTIMATESBASE2010': [54571,182265,27457,131357,134437,53597,28122,134623,17452]
}
census = pd.DataFrame(data)

# 核心代码
result = census.groupby('STNAME')['CENSUS2010POP'].agg([('avg', np.mean), ('sum', np.sum)])
print(result.head())

如果想保留你原来按索引分组的思路,记得要把set_index的结果赋值(或用链式调用),因为set_index默认不会修改原DataFrame:

result = census.set_index('STNAME').groupby(level=0)['CENSUS2010POP'].agg([('avg', np.mean), ('sum', np.sum)])

方法2:先聚合再重命名列

这种写法更直观,先完成聚合操作得到默认列名,再通过rename()修改为你想要的名称:

# 先聚合得到默认列名mean和sum
temp_result = census.groupby('STNAME')['CENSUS2010POP'].agg(['mean', 'sum'])
# 重命名列
result = temp_result.rename(columns={'mean': 'avg', 'sum': 'sum'})
print(result.head())

两种方法都能得到你预期的结果:按州分组,每一行对应一个州的人口均值和总和。

内容的提问来源于stack exchange,提问作者Kakarot_7

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 18:32:28