Unicode кодирует ошибку при записи pandas df в csv

я очистил 400 файлов excel и прочитал их в python с помощью панд и добавил все необработанные данные в один большой 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)

может ли кто-нибудь предложить способ исправить это и что это значит?

спасибо

2 ответов


вы unicode значения в таблице данных. Файлы хранят байты, что означает all unicode должны быть закодированы в байты, прежде чем они могут быть сохранены в файл. Вы должны указать кодировку, такую как utf-8. Например,

df.to_csv('path', header=True, index=False, encoding='utf-8')

если вы не указываете кодировку, то кодировка, используемая df.to_csv по умолчанию ascii в Python2, или utf-8 в Питон3.


добавление ответа, чтобы помочь себе google позже:

один трюк, который помог мне, - это сначала кодировать проблемный ряд, а затем декодировать его обратно в utf-8. Например:

df['crumbs'] = df['crumbs'].map(lambda x: x.encode('unicode-escape').decode('utf-8'))

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