Pandas lus dans le tableau sans en-têtes

Comment puis-je lire dans un .fichier csv (sans en-têtes) et quand je veux seulement un sous-ensemble des colonnes (disons 4ème et 7ème sur un total de 20 colonnes), en utilisant des pandas? Je ne peux pas sembler être capable de faire usecols

88
demandé sur user308827 2015-03-26 22:27:49

3 réponses

Pour lire un fichier csv qui n'a pas d'en-tête et pour certaines colonnes seulement, vous devez passer params header=None et usecols=[3,6] pour les 4ème et 7ème colonnes:

df = pd.read_csv(file_path, header=None, usecols=[3,6])

Voir les documents

127
répondu EdChum 2015-03-26 19:48:50

Assurez-vous que vous spécifiez pass header=None et ajoutez usecols=[3,6] pour les 4ème et 7ème colonnes.

6
répondu Jaco 2018-01-18 15:36:58

Les réponses précédentes étaient bonnes et correctes, mais à mon avis, Un paramètre names supplémentaire le rendra parfait, et il devrait être le moyen recommandé, surtout quand le csv n'a pas headers.

Utiliser names le paramètre

df = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'])

Ou utilisez header=None pour indiquer explicitement aux gens que le csv n'a pas d'en-têtes (de toute façon les deux lignes sont identiques )

df = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'], header=None)

Afin que vous puissiez récupérer vos données par

# with `names` parameter
df['colA']
df['colB'] 

Au Lieu de

# without `names` parameter
df[0]
df[1]

Expliquer

Basé sur read_csv , quand names sont passés explicitement, alors header se comportera comme None au lieu de 0, donc on peut ignorer header=None Quand names existent.

5
répondu ch33hau 2018-09-21 10:45:28