Python 未找到列名,可能是因为';拉丁语-1';识别为utf-8的字符

Python 未找到列名,可能是因为';拉丁语-1';识别为utf-8的字符,python,python-2.7,pandas,iso-8859-1,Python,Python 2.7,Pandas,Iso 8859 1,我在使用Pandas库的Jupyter笔记本上使用Python 2.7,我面临以下问题: 我有一个数据集,其中包含带有重音符号的字符,为了从.csv中提取数据,我编写了以下代码: datafile = pd.read_csv("exportacionEmitidas.csv", delimiter=";", encoding='latin-1', low_memory=False) 这些是我得到的专栏,我觉得很好: Nº Serie + Nº Factura Ejercicio Period

我在使用Pandas库的Jupyter笔记本上使用Python 2.7,我面临以下问题:

我有一个数据集,其中包含带有重音符号的字符,为了从.csv中提取数据,我编写了以下代码:

datafile = pd.read_csv("exportacionEmitidas.csv", delimiter=";", 
encoding='latin-1', low_memory=False)
这些是我得到的专栏,我觉得很好:

Nº Serie + Nº Factura
Ejercicio
Periodo
Fecha Expedición
Fecha Operacion 
NIF Destinatario
Nombre o Razón Social Destinatario
但是,当我尝试仅使用某些列创建新的数据帧时,我收到了以下恼人的消息:

  datafile[["Nº Serie + Nº Factura","Fecha Expedición"]]
KeyError: "['N\\xc2\\xba Serie + N\\xc2\\xba Factura' 'Fecha Expedici\\xc3\\xb3n'] not in index"
我不想按列索引选择列,因为我想避免在列顺序发生变化时出错。

您的列名是Unicode对象,而不是字节字符串。使用Unicode文字(前缀为
u
)对其进行寻址:

datafile[[u"Nº Serie + Nº Factura", u"Fecha Expedición"]]
您可以在回显所有列名时看到这一点:

>>> datafile.columns
Index([u'Nº Serie + Nº Factura', u'Ejercicio', u'Periodo', u'Fecha Expedición',
       u'Fecha Operacion', u'NIF Destinatario',
       u'Nombre o Razón Social Destinatario'],
      dtype='object')
每个列名都使用相同的
u'…'
字符串文字语法进行回显

请注意,要在此类字符串中使用非ASCII字符,必须:

您可能想转到Python 3。Python3更加完全支持Unicode,Python2将在18个月后不再受支持

# coding: UTF-8
# The above states this source file is saved using UTF-8.