You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:55:28