Pandas用rename_axis设置表头后按Hour分组求和报KeyError如何解决
报错根因
rename_axis()的作用是修改行/列索引的名称,不会生成新的普通列,你看到的Hour是索引的标识,不属于数据框的列字段,所以按列名查询时触发KeyError。- 额外变量名风险:你修改索引名的操作是在
df_output上执行的,但分组代码调用的是原始数据集df,如果是笔误请统一使用处理后的df_output变量。
解决方案
你可以根据实际场景选择对应方案:
方案1:索引转列后按列分组
如果需要把Hour、Input转为普通字段使用,先重置索引即可:
# 将多级行索引转为普通列 df_output = df_output.reset_index() # 后续分组操作可正常执行 df_output = df_output.groupby(['Hour'], as_index=False).sum()
方案2:直接按索引分组
不需要修改数据结构的情况下,指定按索引层级分组即可:
# level参数传入索引名Hour,直接按索引分组 df_output = df_output.groupby(level='Hour', as_index=False).sum()
导入无表头Excel的正确设置列名方式
如果你只是要给无表头的Excel数据设置列名,不需要用rename_axis,直接给列属性赋值即可:
# 直接给列字段设置名称,后续可直接按列名操作 df_output.columns = ['Hour', 'Input']
内容的提问来源于stack exchange,提问作者Stunner Dew
相关产品推荐
相关产品推荐

