web-dev-qa-db-fra.com

Pandas lu dans le tableau sans en-têtes

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

170
user308827

Pour lire un csv qui n'a pas d'en-tête et pour certaines colonnes seulement, vous devez passer les paramètres 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 le docs

249
EdChum

Les réponses précédentes étaient bonnes et correctes, mais à mon avis, un paramètre supplémentaire names le rendra parfait, et il devrait être recommandé, en particulier lorsque le CSV n'a pas de headers.

Solution

Utiliser les paramètres usecols et names

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

Lecture complémentaire

ou utilisez header=None pour indiquer explicitement aux gens que la csv n'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 par

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

au lieu de

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

Explique

Basé sur read_csv , lorsque names sont passés explicitement, alors header se comportera comme None au lieu de 0, de sorte que l'on peut ignorer header=None quand names existe.

33
ch33hau

Assurez-vous de spécifier pass header=None et d'ajouter usecols=[3,6] pour les 4ème et 7ème colonnes.

7
Jaco