TypeError: tuple indices must be integers, not str
3 Réponses :
Ici :
for row in df.itertuples():
print(row.num_legs)
# print(row.num_wings) # Other column values
# Output
4
2
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.
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'])
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.
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 >