Ce que ne fait argument en-tête dans les pandas.read_csv veux dire?
J'ai un fichier csv avec le contenu suivant:
col1;col2;col3
1.0;10.0;100.0
2.0;20.0;200.0
3.0;30.0;300.0
Puis je l'ai lu avec pandas de la manière suivante:
df = pandas.read_csv('test.csv', sep=';', header=True)
Comme un résultat-je obtenir les données suivantes-cadre:
1.0 10.0 100.0
0 2 20 200
1 3 30 300
Cela signifie que les pandas utilisé le deuxième de donner des noms de colonnes (colonnes sont nommées comme 1.0, 10.0 et 100.0). Si utilisé header = False
à la place:
df = pandas.read_csv('test.csv', sep=';', header=False)
- Je obtenir le tableau suivant:
col1 col2 col3
0 1 10 100
1 2 20 200
2 3 30 300
Ce qui signifie que les pandas utilisé la première ligne comme en-tête, malgré le fait que j'ai écrit explicitement qu'il n'y a pas d'en-tête.
Ce comportement n'est pas intuitif pour moi. Quelqu'un peut-il expliquer ce qui se passe?
OriginalL'auteur Roman | 2015-09-23
Vous devez vous connecter pour publier un commentaire.
Vous dites pandas quelle est votre ligne d'en-tête, en passant
False
cette évalue à0
c'est pourquoi on le lit dans la première ligne de l'en-tête comme prévu, lorsque vous passezTrue
il évalue à1
afin qu'il lit la deuxième ligne, si vous avez passéNone
puis il pense qu'il n'y a pas de ligne d'en-tête et auto généré des valeurs ordinales.Mise à JOUR
Depuis la version
0.17.0
ce sera désormais élever unTypeError
header=0
au lieu deheader=True
pour les Pandas de version supérieure 0.17.0 pour spécifier la première ligne de l'en-tête.OriginalL'auteur EdChum