使用Pandas读取CSV文件列时出现KeyError问题求助
解决Pandas读取CSV列时的KeyError问题
问题场景
执行以下代码读取CSV文件的Nombre列时触发KeyError:
import pandas as pd df = pd.read_csv('archivos\\hi.csv') name = df['Nombre'] print(name)
CSV文件hi.csv内容:
'Nombre','Apellido','Edad' 'Daniela','Alvarez',21 'Eugenia','Ramos',44 'Marcelo','Hernandez',67
报错信息:
Traceback (most recent call last): File "c:\Users\PC\OneDrive\Escritorio\Python\archivos\leer.py", line 3, in <module> name = df['Nombre'] ~~^^^^^^^^^^ File "C:\Users\PC\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\frame.py", line 3893, in __getitem__ indexer = self.columns.get_loc(key) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\PC\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\core\indexes\base.py", line 3798, in get_loc raise KeyError(key) from err KeyError: 'Nombre'
执行print(df.columns)发现列名实际被单引号包裹:
Index([''Nombre'', ''Apellido'', ''Edad''], dtype='object')
原因分析
CSV文件的列名和部分单元格值被单引号包裹,Pandas默认未识别这些单引号为引号分隔符,导致解析后列名包含单引号(实际列名为'Nombre'而非Nombre),因此直接调用df['Nombre']会触发KeyError。
解决方案
方法一:读取时指定引号解析参数(推荐)
通过quotechar参数告诉Pandas将单引号视为值的包裹符号,解析时自动去除列名和单元格的单引号:
import pandas as pd df = pd.read_csv('archivos\\hi.csv', quotechar="'") name = df['Nombre'] print(name)
方法二:手动清理列名
读取CSV后,批量去除列名前后的单引号:
import pandas as pd df = pd.read_csv('archivos\\hi.csv') # 去除列名首尾的单引号 df.columns = df.columns.str.strip("'") name = df['Nombre'] print(name)
方法三:直接使用带单引号的列名(临时方案)
如果仅需临时读取,可直接使用包含单引号的列名:
import pandas as pd df = pd.read_csv('archivos\\hi.csv') name = df["'Nombre'"] print(name)
内容的提问来源于stack exchange,提问作者Daniela
相关产品推荐
相关产品推荐

