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

Python使用Pandas做数据离散化时报列名KeyError问题求助

问题解决方案

错误原因

你遇到的KeyError: 'GRANGE_REG'错误,是因为你的DataFrame中不存在名为GRANGE_REG的列,结合LEG列可以正常处理,问题通常为以下两类:

  • 列名拼写错误:手写的列名和实际列名不一致,大概率是拼写偏差,比如实际列名是GRANDE_REG,你误写为GRANGE_REG
  • 列名携带隐形字符:导入ods格式文件时,列名可能前后携带空格、特殊符号等不可见字符,导致名称匹配失败

排查方法

运行如下代码输出所有列名,即可确认准确的列名:

print([col for col in X.columns])

拿到正确列名后,替换coluna列表中错误的GRANGE_REG即可解决报错。

离散化代码优化

你当前的离散化实现存在两个明显问题:

  1. 全局replace操作会误替换其他列中与当前列分类值相同的内容,导致其他列数据异常
  2. 双层循环的实现效率极低,数据量较大时运行耗时非常久
    你可以直接使用Pandas内置的factorize方法完成分类编码,和你原有逻辑完全一致,是将分类值映射为从0开始的连续整数,代码更简洁高效:
# 注意原列表中LEG重复定义,这里已去重
coluna = ["LEG","GRANGE_REG", "SIGLA_UF", "NOME", "TIPO", "CAT_ASSOC", "NOME_MUN"]
for col in coluna:
    X[col], _ = pd.factorize(X[col])
    print('处理后的数据:')
    print(X[col])

内容的提问来源于stack exchange,提问作者Gabriel Ferreira Franco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 17:54:08