Unicode Encode Error при записи pandas df в csv
Я очистил 400 файлов excel и прочитал их в python с помощью pandas и добавил все необработанные данные в один большой df.
Затем, когда я пытаюсь экспортировать его в csv:
df.to_csv("path",header=True,index=False)
Я получаю эту ошибку:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xc7' in position 20: ordinal not in range(128)
Может кто-нибудь предложить способ исправить это и что это значит?
Спасибо
Ответы
Ответ 1
В вашем DataFrame есть значения unicode
. Файлы хранят байты, что означает, что все unicode
должны быть закодированы в байты, прежде чем они могут быть сохранены в файле. Вы должны указать кодировку, например utf-8
. Например,
df.to_csv('path', header=True, index=False, encoding='utf-8')
Если вы не укажете кодировку, тогда кодировка, используемая df.to_csv
, по умолчанию равна ascii
в Python2 или utf-8
в Python3.
Ответ 2
Добавление ответа, чтобы помочь себе позже:
Один трюк, который помог мне, - сначала кодировать проблемную серию, а затем декодировать ее обратно в utf-8. Как:
df['crumbs'] = df['crumbs'].map(lambda x: x.encode('unicode-escape').decode('utf-8'))
Это также приведет к правильной печати данных.