2015-07-10 8 views
16

Ich bereinigt 400 Excel-Dateien und lasen sie in Python mit Pandas und fügte alle Rohdaten in einem großen df.Unicode Encode Fehler beim Schreiben von Pandas df nach csv

Dann, wenn ich versuche, es in eine CSV zu exportieren:

df.to_csv("path",header=True,index=False) 

ich diesen Fehler:

UnicodeEncodeError: 'ascii' codec can't encode character u'\xc7' in position 20: ordinal not in range(128) 

Kann jemand einen Weg vorschlagen, dies zu beheben und was es bedeutet?

Dank

+0

Bitte sagen Sie, wenn Sie Python 2 oder 3 verwenden, behandeln diese beiden Unicode sehr unterschiedlich. Dann lies [das Unicode-Howto] (https://docs.python.org/3/howto/unicode.html), es gibt einen guten Hintergrund für diesen Fehler. Diese Probleme sind nicht schwer zu lösen, aber Sie müssen zuerst die Grundlagen kennen. – roeland

+0

Ich benutze Python 2 –

+0

https://docs.python.org/2.7/howto/unicode.html – marbel

Antwort

31

Sie haben unicode Werte in Ihrem Datenrahmen. Dateien speichern Bytes, was bedeutet, dass alle unicode in Bytes codiert werden müssen, bevor sie in einer Datei gespeichert werden können. Sie müssen eine Codierung angeben, z. B. utf-8. Zum Beispiel

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

Wenn Sie eine Codierung nicht angeben, dann die Codierung durch df.to_csv standardmäßig ascii in Python2 oder utf-8 in Python3 verwendet.

6

eine Antwort Hinzufügen von mir selbst helfen Google es später:

Ein Trick, der mir geholfen hat zunächst eine problematische Serie zu codieren, ist es dann zu utf-8 dekodieren zurück. Wie:

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

Dies würde dazu führen, dass der Datenrahmen auch korrekt gedruckt wird.