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
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.
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.