web-dev-qa-db-fra.com

pandas: dataframe to_csv, comment définir les noms de colonne

Extrait de code:

import numpy as np
import pandas as pd
myseries=pd.Series(np.random.randn(5))
df=pd.DataFrame(myseries)
df.to_csv("output.csv")

Sortie:

      0
0    0.51..
1    0.14..
2    -0.68..
3    0.48..
4    1.89..

Je veux que le nom de la colonne soit "valeurs" au lieu de 0. Comment puis-je faire cela?
Je suppose que je devrais remplacer la dernière instruction par df.to_csv ("output.csv", columns = ["values"]). Mais j'ai eu l'erreur de clé: u"None of [['values']] are in the [columns]" Je ne sais pas ce que cela signifie.

[mettre à jour]
Plusieurs réponses disent que je devrais utiliser df.columns=['values']. Eh bien, ça ne marche pas pour moi. Je ne me préoccupe pas seulement de l’image DataFrame, mais également de l’analyse du fichier CSV. Le cadre de données a l'air bien, mais pas le fichier csv. C'est la partie déroutante.

...
df.columns=["values"]
df.to_csv("output.csv")

Il dit: IOError: [Errno 13] Permission denied: 'output.csv'.
J'utilise ensuite le chemin absolu "C:\Utilisateurs\monnom\Bureau\sortie.csv", l'erreur est semblable à: IOError: [Errno 13] Permission denied: 'C:\\Users\\myname\\Desktop\\output.csv' Je ne sais pas pourquoi cette erreur, mais c'est plutôt déroutant.
Pour plus d’informations, j’ai installé anaconda-2.7 sur win10. J'ai testé le code avec spyder.

1
dudu

Vous pouvez définir le nom de colonne dans le constructeur DataFrame:

df = pd.DataFrame(myseries, columns=['values'])
df.to_csv("output.csv")

Ou:

df = pd.DataFrame({'values':myseries})
print (df)
     values
0 -0.429758
1 -0.019931
2  1.189596
3  1.309223
4 -0.337061

df.to_csv("output.csv")

Ou définissez le paramètre header dans DataFrame.to_csv :

df = pd.DataFrame(myseries)
df.to_csv("output.csv", header=['values'])

Ou dans Series.to_csv :

myseries.to_csv("output.csv", header=['values'])
2
jezrael

Pour définir le nom de la colonne sur 'valeurs', essayez:

    df.columns = ['values']
1
Stephanie Marker
df.columns = ['values']

Recherche plus avant de poser des questions.

0
Ashutosh Chapagain