Pandas透视表列头为整数引发KeyError,如何转为字符串?
解决方法
方法1:透视时直接生成字符串类型列名
在创建透视表时,提前将Year列转为字符串类型,从根源避免列名类型不一致的问题:
# 示例透视表代码,关键处理Year列类型 df2 = pd.pivot_table( df, values='统计列', index='分组列', columns=df['Year'].astype(str) # 将Year列转为字符串后作为列分组依据 )
生成的df2列名直接是字符串格式,可直接用df2['2012']访问。
方法2:转换已生成df2的列名类型
如果已经得到列名为整数的df2,直接将所有列名转为字符串:
# 普通单列索引场景 df2.columns = df2.columns.astype(str) # 多级列索引场景(比如透视表包含多个统计维度),针对Year所在层级转换 # 假设Year在第一级索引,替换level=0为实际层级 df2.columns = df2.columns.set_levels(df2.columns.levels[0].astype(str), level=0)
执行后即可用df2['2012']正常访问列。
方法3:字典重命名列名(针对整数列名)
如果之前重命名失败,大概率是字典键类型不匹配,用整数作为键生成重名字典:
rename_map = {year: str(year) for year in df2.columns} df2.rename(columns=rename_map, inplace=True)
该方式会把所有整数列名统一转为字符串格式。
内容的提问来源于stack exchange,提问作者DBO5
相关产品推荐
相关产品推荐

