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'))

Это также приведет к правильной печати данных.