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

Pandas按多条件groupby分组时报KeyError: 'year'故障排查求助

问题排查与解决方案

错误原因

你编写的列筛选逻辑仅保留了west列表内的3个电站名称列,直接过滤掉了year和month两列,导致后续groupby操作无法找到指定的分组字段,所以触发KeyError: 'year'报错。
另外你观察到df_out.head()首列标识为plant_name,属于列索引本身的元数据名称(对应你贴出的Index参数name='plant_name'),不会影响列的正常调用,无需额外处理。

修复代码

筛选列时需要同时保留分组字段和需要计算的电站字段,再执行分组求均值即可:

west = ['BIG HORN I','DRY LAKE I', 'TULE']
# 构造待保留的列列表:分组字段 + 目标电站字段
target_cols = ['year', 'month'] + [col for col in df_out.columns if col in west]
# 筛选后分组聚合
westavg = df_out[target_cols].groupby(['year', 'month']).mean()

如果运行后仍有报错,大概率是列名存在隐藏空格,可以用以下代码输出所有列名的原始字符排查:

print([repr(col) for col in df_out.columns])

如果确认year、month实际为行索引而非普通列,增加一步重置索引操作即可:

west = ['BIG HORN I','DRY LAKE I', 'TULE']
df_reset = df_out.reset_index()
target_cols = ['year', 'month'] + [col for col in df_reset.columns if col in west]
westavg = df_reset[target_cols].groupby(['year', 'month']).mean()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:36:03