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

Python使用pandas读取CSV获取指定列触发KeyError问题

异常原因

两个问题共同触发了KeyError:

  1. 核心问题:CSV读取时没有正确识别列分隔符,所有字段被合并成了单列。从你贴的print(df.columns)输出可以看到,返回的Index对象仅包含1个元素,值是拼接了所有表头的完整字符串#,Name,Type 1,Type 2,HP,Attack,Defense,Sp. Atk,Sp. Def,Speed,Generation,Legendary,说明pandas没有将字符串中的逗号识别为列分隔符,解析出的DataFrame实际只有1列,自然不存在你要查询的列。
  2. 细节问题:pandas列名匹配是大小写敏感的,就算列被正确拆分,表头里的列名是大写开头的Name,你代码里写的全小写name也无法匹配到对应列,同样会触发KeyError。
修复步骤
  • 首先在读取CSV时显式指定分隔符为逗号,强制pandas按逗号拆分列,代码修改为:
import pandas as pd
df = pd.read_csv('pokemon_data.csv', sep=',')

如果执行完还是只有单列,可以补充编码参数适配带BOM头的UTF-8文件:

df = pd.read_csv('pokemon_data.csv', sep=',', encoding='utf-8-sig')
  • 读取后验证拆分结果,执行print(df.columns),正常拆分后的输出应该是每个列名单独作为Index的元素,格式如下:
Index(['#', 'Name', 'Type 1', 'Type 2', 'HP', 'Attack', 'Defense', 'Sp. Atk',
       'Sp. Def', 'Speed', 'Generation', 'Legendary'],
      dtype='object')

如果列拆分正常但仍提示找不到列,可以执行下面的代码去除列名前后可能存在的空格、不可见字符:

df.columns = df.columns.str.strip()
  • 最后用大小写完全匹配的列名取值,打印Name列的代码修改为:
print(df['Name'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:12:16