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

使用字典重命名整数类型列名时触发KeyError问题排查

解决DataFrame列名替换时的KeyError问题

问题分析

触发KeyError: 0的核心原因是:你遍历的DataFrame列名(整数类型0)在字典id_to_state中找不到对应键——要么字典的键是字符串类型(比如"0"),要么列名类型和字典键类型完全不匹配。

你尝试转换列名类型但未生效,大概率是调用转换函数后没有重新赋值给原DataFrame,或者转换方式没彻底改变列名的类型。

解决方案

1. 先明确类型匹配关系

先打印列名和字典键的类型,确认二者的差异:

# 查看第一个列名的类型
print(type(unemply_states.columns[0]))
# 查看字典第一个键的类型
print(type(list(id_to_state.keys())[0]))

2. 正确转换列名类型

根据上面的结果选择对应转换方式:

  • 如果字典键是字符串,把列名转为字符串:

    # 直接用astype转换更可靠
    unemply_states.columns = unemply_states.columns.astype(str)
    

    或者用列表推导生成新的Index:

    import pandas as pd
    unemply_states.columns = pd.Index([str(col) for col in unemply_states.columns])
    
  • 如果字典键是整数,把列名转为整数(仅当列名是字符串形式的数字时适用):

    unemply_states.columns = unemply_states.columns.astype(int)
    

注意:调用转换函数后必须重新赋值给原DataFrame,比如:

unemply_states = convert_int_column_names_to_str(unemply_states)

否则原DataFrame的列名不会被修改。

3. 更安全的列名替换方式

不用手动遍历列名,直接用pandas的rename方法,它会自动匹配键值,不匹配的列名会保留,避免报错:

unemply_states = unemply_states.rename(columns=id_to_state)

内容的提问来源于stack exchange,提问作者Brian Coding

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:07:02