1
votes

Obtenir des données de Pandas DataFrame à l'aide de valeurs de colonne

TypeError: tuple indices must be integers, not str

0 commentaires

3 Réponses :


1
votes

Ici :

for row in df.itertuples():
    print(row.num_legs)
  # print(row.num_wings)   # Other column values

# Output
4
2


5 commentaires

l'acceptant puisque j'utilisais itertuples pour itérer sur des trames de données.


J'ai essayé d'utiliser la même chose lors de la lecture d'un csv en utilisant read_csv mais ma première ligne après les commentaires en csv n'est pas traitée comme des noms de colonne et j'obtiens une exception en utilisant row ["columnHeader"] < / code>


Bien que ce soit une question distincte que vous devriez soulever, mais comme indice, jouez avec l'argument header .


J'ai essayé d'utiliser l'argument header , malheureusement, le csv a des données de colonne supplémentaires en dehors de l'en-tête de colonne et par conséquent, lors de l'utilisation de l'argument header , l'analyse échoue


@darth_coder Ensuite, je vous suggère de poser une question distincte, en énumérant uniquement ce problème avec une explication appropriée.



1
votes

vous pouvez utiliser iterrows(),

dog
num_legs     4
num_wings    0
Name: dog, dtype: int64
4
hawk
num_legs     2
num_wings    2
Name: hawk, dtype: int64
2

O/P:

for u,row in df.iterrows():
    print(u)
    print (row)
    print (row['num_legs'])


1 commentaires

Cette réponse est également correcte et j'utiliserais maintenant iterrows lors du codage plutôt que itertuples car la façon dont les données sont accédées imite l'opérateur d'index de tableau.



2
votes

J'ai rencontré la même erreur lors de l'utilisation d'une variable.

v = 'num_legs'
for row in df.itertuples():
    print(getattr(row, v))

Pour utiliser df.itertuples () et utiliser le nom de l'attribut comme variable. p >

v = 'num_legs'
for row in df.itertuples():
    print(row[v])

TypeError: tuple indices must be integers or slices, not str

À la fin, df.itertuples () est plus rapide que df.iterrows () .

p >


3 commentaires

Comment avez-vous évalué pour conclure que itertuples est plus rapide que iterrows ?


Vous pouvez consulter ce lien et la semaine dernière je ont testé la même chose avec de grands dataframes.


Et aussi ceci