J'ai une trame de données en pandas que je voudrais écrire dans un fichier CSV. Je fais cela en utilisant:
df.to_csv('out.csv')
Et obtenir l'erreur:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u03b1' in position 20: ordinal not in range(128)
Existe-t-il un moyen de contourner cela facilement (c'est-à-dire que j'ai des caractères Unicode dans ma trame de données)? Et existe-t-il un moyen d'écrire dans un fichier délimité par des tabulations au lieu d'un CSV en utilisant, par exemple, une méthode «to-tab» (qui, je pense, n'existe pas)?
index=False
de supprimer l'index.Lorsque vous stockez un
DataFrame
objet dans un fichier csv à l'aide de lato_csv
méthode, vous n'aurez probablement pas besoin de stocker les indices précédents de chaque ligne de l'DataFrame
objet.Vous pouvez éviter cela en passant une
False
valeur booléenne auindex
paramètre.Un peu comme:
Donc, si votre objet DataFrame est quelque chose comme:
Le fichier csv stockera:
au lieu de (le cas où la valeur par défaut a
True
été passée)la source
df.rename_axis('index_name')
? cela ne modifie pas le fichier luiPour écrire un DataFrame pandas dans un fichier CSV, vous aurez besoin
DataFrame.to_csv
. Cette fonction propose de nombreux arguments avec des valeurs par défaut raisonnables que vous devrez le plus souvent ignorer en fonction de votre cas d'utilisation spécifique. Par exemple, vous souhaiterez peut-être utiliser un séparateur différent, modifier le format datetime ou supprimer l'index lors de l'écriture.to_csv
contient des arguments que vous pouvez transmettre pour répondre à ces exigences.Voici un tableau répertoriant certains scénarios courants d'écriture dans des fichiers CSV et les arguments correspondants que vous pouvez utiliser pour eux.
la source
Vous pouvez essayer autre chose si vous rencontrez des problèmes de codage en «utf-8» et que vous souhaitez passer cellule par cellule, vous pouvez essayer ce qui suit.
Python 2
(Où "df" est votre objet DataFrame.)
Alors essaye:
Vous pouvez vérifier l'encodage des colonnes en:
Attention: errors = 'ignore' va juste omettre le caractère par exemple
Python 3
la source
Parfois, vous rencontrez ces problèmes si vous spécifiez également le codage UTF-8. Je vous recommande de spécifier l'encodage lors de la lecture du fichier et le même encodage lors de l'écriture dans le fichier. Cela pourrait résoudre votre problème.
la source
Exemple d'exportation dans un fichier avec chemin complet sous Windows et dans le cas où votre fichier a des en- têtes :
Exemple si vous souhaitez stocker dans un dossier dans le même répertoire que votre script, avec l' encodage utf-8 et l' onglet comme séparateur :
la source
ce pourrait ne pas être la réponse pour ce cas, mais comme j'avais le même message d'erreur avec
.to_csv
j'ai essayé.toCSV('name.csv')
et le message d'erreur était différent ("SparseDataFrame' object has no attribute 'toCSV'
). Donc le problème a été résolu en transformant le dataframe en un dataframe densela source
.toCSV
et non.to_csv
. Vous avez oublié le trait de soulignement