Pandas执行pivot_table时team列存在却报KeyError错误问题求助
解决方案
你可以直接用pivot_table的聚合能力一步生成目标结果,无需提前分组计算,写法更简洁也能避免中间变量列丢失的问题:
df_overall = df.pivot_table( index='question', columns='team', values='answers', aggfunc='mean' ).reset_index().rename_axis(None, axis=1)
运行后输出的结果完全符合你预期的格式。
原有代码报错原因&修正方案
你写的原始代码逻辑本身是可行的,出现KeyError: 'team'大概率是运行过程中中间变量df_overall被之前的测试代码污染导致列丢失,你可以重启Python内核后重跑原始代码即可正常运行。也可以用下面的写法优化原有逻辑,减少中间操作步骤降低出错概率:
# 分组直接计算正确率,as_index=False避免分组键转索引 df_rating = df.groupby(['team', 'question'], as_index=False)['answers'].mean() df_rating.rename(columns={'answers': 'TeamRanking'}, inplace=True) # 透视生成宽表 df_overall = df_rating.pivot(index='question', columns='team', values='TeamRanking').reset_index().rename_axis(None, axis=1)
注:布尔列直接用mean()计算等价于你写的sum()/len(x),效果一致写法更简洁
内容的提问来源于stack exchange,提问作者futuredataengineer
相关产品推荐
相关产品推荐

