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?.
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)
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.