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
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
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
.
usecols
et names
df = pd.read_csv(file_path, usecols=[3,6], names=['colA', 'colB'])
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]
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.
Assurez-vous de spécifier pass header=None
et d'ajouter usecols=[3,6]
pour les 4ème et 7ème colonnes.