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
相关产品推荐
相关产品推荐

