Pandas lus dans le tableau sans en-têtes

239

Comment puis-je lire dans un fichier .csv (sans en-têtes) et quand je veux seulement un sous-ensemble des colonnes (disons 4e et 7e sur un total de 20 colonnes), en utilisant des pandas? Je n'arrive pas à faireusecols

user308827
la source

Réponses:

351

Afin de lire un csv qui n'a pas d'en-tête et pour seulement certaines colonnes, vous devez passer des paramètres header=Noneet usecols=[3,6]pour les 4e et 7e colonnes:

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

Voir les documents

EdChum
la source
67

Les réponses précédentes étaient bonnes et correctes, mais à mon avis, un namesparamètre supplémentaire le rendra parfait, et ce devrait être la manière recommandée, surtout lorsque le csv n'a pas headers.

Solution

Utilisation usecolset namesparamètres

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

Lecture complémentaire

ou utilisez header=Nonepour dire explicitement aux gens qu'il csvn'a pas d'en-tête (de toute façon les deux lignes sont identiques )

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

Pour que vous puissiez récupérer vos données en

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

au lieu de

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

Explique

Basé sur read_csv , quand ils namessont passés explicitement, alors headerse comportera comme Noneau lieu de 0, donc on peut sauter header=Nonequand il namesexiste.

ch33hau
la source
9

Assurez-vous de spécifier passer header=Noneet ajouter usecols=[3,6]pour les 4e et 7e colonnes.

Alex
la source