Pandas读取带引号列名的CSV触发AttributeError如何解决?
问题原因与解决方法
是的,这个错误完全和首行列名的双引号有关。你的CSV列名被双引号包裹,pandas读取后,列名实际是带引号的(比如"City"而不是City),所以用cities.City访问时会提示找不到属性——str.strip()只能去除空格,没法删掉引号,所以没用。
两种程序化解决办法:
1. 读取CSV时直接处理(推荐)
在read_csv里指定quotechar参数识别双引号,同时加上skipinitialspace=True去掉列名/值前面的空格:
import pandas as pd cities = pd.read_csv("cities.csv", quotechar='"', skipinitialspace=True)
这样pandas会自动解析掉列名的双引号,同时清理掉逗号后的空格,直接得到干净的列名(LatD、City等),之后执行cities.City.str.contains("Y")就正常了。
2. 读取后修复列名
如果已经读取了数据,直接对列名做替换和清理:
# 先去掉列名的双引号,再去除前后空格 cities.columns = cities.columns.str.replace('"', '').str.strip()
处理完后,列名就变成了不带引号的干净名称,就能正常用cities.City访问了。
测试一下,处理后执行你的筛选代码,会返回Youngstown、Yankton、Yakima这三行数据。
内容的提问来源于stack exchange,提问作者onlyf
相关产品推荐
相关产品推荐

