Pandas Dataframe KeyError:'account_key'不在索引中求助
解决groupby后提取列出现KeyError的问题
运行以下代码尝试提取指定列时触发KeyError,提示account_key不在索引中,但原数据框确实包含该列:
non_contras_by_account = non_contras.groupby('account_key').sum() non_contra_tab_df = non_contras_by_account[['account_key',value_col,'abs_val']]
错误信息:
KeyError: "['account_key'] not in index"
问题原因
使用groupby('account_key').sum()进行分组聚合时,account_key会被自动设置为结果数据框的索引,不再作为普通列存在,因此直接按列名提取会报错。
解决方法
有两种常用方案:
方案1:分组时保留account_key为列
在groupby中添加as_index=False参数,让分组键保持为普通列:
non_contras_by_account = non_contras.groupby('account_key', as_index=False).sum() non_contra_tab_df = non_contras_by_account[['account_key',value_col,'abs_val']]
方案2:将索引转为普通列后再提取
对分组后的结果调用reset_index(),把索引account_key转为普通列:
non_contras_by_account = non_contras.groupby('account_key').sum().reset_index() non_contra_tab_df = non_contras_by_account[['account_key',value_col,'abs_val']]
如果不想修改原分组结果,也可以在提取时直接链式调用:
non_contra_tab_df = non_contras_by_account.reset_index()[['account_key',value_col,'abs_val']]
内容的提问来源于stack exchange,提问作者mot375
相关产品推荐
相关产品推荐

