Имя столбца не найдено, вероятно, потому что символ "Latin-1" распознается как utf-8
Я использую Python 2.7 на ноутбуке Jupyter, используя библиотеку Pandas, и столкнулся со следующей проблемой:
У меня есть набор данных, который содержит символы с акцентами, для извлечения данных из.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"
Я не хотел бы выбирать столбцы по индексу столбцов, потому что я хотел бы избежать ошибок в случае изменения порядка столбцов.
1 ответ
Ваши имена столбцов являются объектами 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:
# coding: UTF-8
# The above states this source file is saved using UTF-8.
Возможно, вы захотите перейти на Python 3. Python 3 более полно поддерживает Unicode, и Python 2 больше не будет поддерживаться через 18 месяцев.