web-dev-qa-db-fra.com

Erreur de codage Unicode lors de l'écriture pandas df en csv

J'ai nettoyé 400 fichiers Excel et les ai lus dans python en utilisant pandas et j'ai ajouté toutes les données brutes dans un grand df).

Puis quand j'essaye de l'exporter vers un csv:

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

Je reçois cette erreur:

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

Quelqu'un peut-il suggérer un moyen de résoudre ce problème et ce que cela signifie?

Merci

27
I am not George

Vous avez unicode valeurs dans votre DataFrame. Les fichiers stockent des octets, ce qui signifie que tous les unicode doivent être codés en octets avant de pouvoir être stockés dans un fichier. Vous devez spécifier un encodage, tel que utf-8. Par exemple,

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

Si vous ne spécifiez pas d'encodage, l'encodage utilisé par df.to_csv par défaut à ascii en Python2, ou utf-8 en Python3.

59
unutbu

Ajouter une réponse pour m'aider à la rechercher sur Google plus tard:

Une astuce qui m'a aidé est d'abord de coder une série problématique, puis de la décoder en utf-8. Comme:

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

Cela permettrait également au cadre de données de s'imprimer correctement.

10
tangfucius