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

Pandas读取CSV后属性访问Category、Cost列报错原因咨询

问题原因解释

核心原因:CSV表头列名存在多余空格

你给出的CSV文件表头行内容为Category ,Type,Provider,Cost ,可以看到Category后、逗号前多了一个空格,Cost末尾也多了一个空格。pd.read_csv默认会完整保留列名里的空格,所以导入后实际的列名为'Category '(末尾带空格)、'Cost '(末尾带空格),和你尝试访问的Category、Cost完全是两个不同的字符串,自然会抛出属性不存在的错误。
你修改列名的操作本质是顺便删掉了列名末尾的多余空格,所以后续可以正常访问,和Python、Pandas的保留关键字没有关系:Category和Cost都不属于保留关键字,不会触发限制。

补充:Pandas属性访问列的适用限制

除了列名不匹配的问题,属性访问仅在列名满足以下两个条件时可用:

  • 列名符合Python标识符命名规则:仅包含字母、数字、下划线,不能以数字开头,不能包含空格、特殊符号
  • 列名不与DataFrame内置的属性、方法重名(比如列名为count、sum时,属性访问会优先指向内置方法,无法读到对应列)
    不符合上述条件的列,都可以通过方括号语法正常访问,比如你导入原文件后执行bills['Category ']、bills['Cost ']就能读到对应数据。

解决方案

你可以选择两种方式处理:

  • 修改CSV文件,删掉表头所有列名前后的多余空格
  • 读取CSV时添加skipinitialspace=True参数,自动忽略列名和数值前的多余空格:
bills = pd.read_csv('Bills.csv', skipinitialspace=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:36:08