使用Pandas pd.pivot_table触发KeyError,求按年统计分类列均值
解决pivot_table的KeyError问题:错误引用列名
嘿,这个问题很好解决!你碰到的KeyError '0'完全是因为在pivot_table的values参数里用了不存在的列名——你的DataFrame里明明是'cath1'、'cath2'、'cath3'这三个分类列,结果你写成了'0'、'1'、'2',pandas找不到这些列自然就报错了。
直接把values里的内容换成实际存在的列名就行,正确的代码应该是这样:
import pandas as pd import numpy as np # 基于你的df生成按年份聚合的各分类均值表 df1 = pd.pivot_table(df, index=['year'], values=['cath1', 'cath2', 'cath3'], aggfunc=np.mean)
要是想更省事,其实还能省略values参数——因为pivot_table默认会自动把所有非索引列的数值型字段纳入计算,刚好你的三个分类列都是数值类型,所以代码可以简化成:
df1 = pd.pivot_table(df, index='year', aggfunc=np.mean)
给你个小提醒:以后再碰到列名相关的错误,先跑一遍print(df.columns)确认下DataFrame里的列名到底是什么,能避免很多这类低级失误~
内容的提问来源于stack exchange,提问作者Alex2b
相关产品推荐
相关产品推荐

