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
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])
Assurez-vous que vous spécifiez pass header=None
et ajoutez usecols=[3,6]
pour les 4ème et 7ème colonnes.
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.