2 votes

Pandas - AttributeError : l'objet '_iLocIndexer' n'a pas d'attribut 'sector'.

J'ai créé un exemple de code, pour voir si les choses fonctionnaient comme je le souhaitais.

predictorgroups=predictor.groupby("sector")
targetco=target.iloc[1]
group=predictorgroups.get_group(targetco.sector).astype(object)
pdf=(group).sort('size',ascending=False)[:10].astype(object)

Cela a bien fonctionné. J'ai donc voulu mettre à jour et faire en sorte que ce code interagisse plusieurs fois, et je l'ai donc adapté :

for i in range(len(target.index[:10])):
    predictorgroups=predictor.groupby("sector")
    targetco=target.iloc(i)
    group=predictorgroups.get_group(targetco.sector).astype(object)
    pdf=(group).sort('size',ascending=False)[:10].astype(object)

Notez qu'il s'agit du même code que le précédent. Cependant, dans le second, j'obtiens cette erreur :

Traceback (most recent call last):
File "/file.py", line 64, in <module>
group=predictorgroups.get_group(targetco.sector).astype(object)
AttributeError: '_iLocIndexer' object has no attribute 'sector'

J'ai remarqué que dans le premier code, si j'imprime targetco J'obtiens une série Pandas avec un seul index. Si je fais la même chose dans le second, j'obtiens le type d'objet suivant :

targetco pandas.core.indexing._iLocIndexer object at 0x105a3e438

Quelqu'un peut-il m'expliquer pourquoi cela se produit ? Pourquoi j'obtiens une réponse différente dans le second code alors que les deux sont identiques ?

5voto

jezrael Points 290608

Je pense qu'il y a une faute de frappe. () a [] :

targetco=target.iloc(i)

à

targetco=target.iloc[i]

Parce que :

targetco = target.iloc(1)
print (targetco)
<pandas.core.indexing._iLocIndexer object at 0x000000000A8CD358>

et ensuite pandas.core.indexing._iLocIndexer n'a pas de colonne sector et soulève donc une erreur :

print (targetco.sector)
AttributeError: '_iLocIndexer' object has no attribute 'sector'

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X