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

Pandas DataFrame读取csv后访问指定列报错是什么原因?如何解决?

问题原因
  • 列名带多余前置空格:CSV表头的分隔逗号后带有空格,pandas默认会把空格也识别为列名的一部分,你可以执行print(df3.columns)验证,会看到列名实际为[' p1', ' p2', ' p3', ' p4', ' vis'],vis前面多了一个空格,所以直接写df3['vis']找不到对应列。
  • 索引方式错误:df3[整数]的写法默认是匹配列名等于该整数的列,不是按位置取列,你当前没有名为0的列,所以报错。
解决方法

方法1:读取时自动处理空格

调用pd.read_csv时添加skipinitialspace=True参数,自动忽略逗号后的空格,直接得到规范列名:

df3 = pd.read_csv('test2.csv', index_col=0, skipinitialspace=True)
# 后续可正常访问列
print(df3['vis'])

方法2:已读取数据则手动清理列名

如果已经加载了数据,直接批量去除所有列名前后的空白字符即可:

df3.columns = df3.columns.str.strip()
print(df3['vis'])

方法3:按位置索引取列

如果需要按位置序号取列,用iloc属性即可,比如取最后一列(vis列)的写法为:

# :表示选取所有行,-1表示取倒数第一列
print(df3.iloc[:, -1])
# 取第一列就把-1替换为0
print(df3.iloc[:, 0])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 20:36:04