web-dev-qa-db-fra.com

'l'étiquette [0] n'est pas dans le [index]'

lorsque j'émets le code suivant en python où myfun est le nom de ma fonction, B est le cadre de données Panda:

myfun(B,10)

il donne une erreur à cette ligne dans la fonction

A=(data.loc[ii]>=A1) & (data.loc[ii]<A2)

où B et les données sont les mêmes et A1 et A2 sont des nombres . L'erreur est la suivante:

'the label [0] is not in the [index]'

J'ai tout lu sur votre site web, cela ne s'applique pas à mon cas. comme personne n’a expliqué de quoi cette erreur parle.

Est-ce que quelqu'un peut dire où je peux éventuellement avoir un problème et comment je peux le résoudre? Que signifie même que l'étiquette [0] n'est pas dans [index]? Qu'est-ce que label [0] dans mon cas?.

2
justin

De la documentation pandas:

DataFrame.loc

Accédez à un groupe de lignes et de colonnes par étiquette (s) ou par un tableau booléen . .loc [] est principalement basé sur les étiquettes, mais peut également être utilisé avec un tableau booléen . Les entrées autorisées sont:

  • Une seule étiquette, par exemple 5 ou 'a', (notez que 5 est interprété comme une étiquette de l'index et jamais comme une position entière le long de l'index ).

  • Une liste ou un tableau d'étiquettes, par exemple ['a', 'b', 'c'].

  • Un objet tranche avec des étiquettes, par ex. 'un F'.

  • Un tableau booléen de même longueur que l'axe en train d'être découpé, par ex. [Vrai, faux, vrai].

  • Une fonction appelable avec un argument (Series, DataFrame ou Panel appelant) et renvoyant une sortie valide pour l'indexation (l'un des Ci-dessus)

Puisque je suppose que ii est de type entier, vous devez utiliser df.iloc à la place:

A = (data.iloc[ii] >= A1) & (data.iloc[ii] < A2)
2
Scotty1-

Cette erreur se produit également lorsque votre index ne commence pas par 0. Je réinitialise mon index en utilisant le code ci-dessous qui a corrigé l'erreur. 

train_df = train_df.reset_index()

Cela n'aborde pas directement le problème décrit dans la question, mais je voulais laisser cela ici pour référence au cas où quelqu'un rencontrerait la même erreur à l'avenir.

0
MatAff