webentwicklung-frage-antwort-db.com.de

'das Label [0] ist nicht im [Index]'

wenn ich folgenden Code in Python ausgeben, wobei myfun der Name meiner Funktion ist, ist B der Panda-Datenrahmen:

myfun(B,10)

es gibt einen Fehler in dieser Zeile in der Funktion

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

dabei sind B und Daten gleich und A1 und A2 sind Zahlen. Der Fehler lautet wie folgt:

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

Ich habe alles auf Ihrer Website gelesen, es trifft nicht auf meinen Fall zu. denn niemand hat erklärt, worüber dieser Fehler spricht.

Kann irgendjemand sagen, wo ich möglicherweise ein Problem haben kann und wie ich es beheben kann? Was bedeutet sogar, dass label [0] nicht in [index] steht? Was ist Label [0] in meinem Fall.

2
justin

Aus der pandas-Dokumentation:

DataFrame.loc

Greifen Sie auf eine Gruppe von Zeilen und Spalten über Label oder ein boolesches Array zu. .loc [] basiert hauptsächlich auf Labels, kann aber auch mit einem booleschen Array verwendet werden. Zulässige Eingaben sind:

  • Ein einzelnes Etikett, z. 5 oder 'a' (beachten Sie, dass 5 als Bezeichnung des Index interpretiert wird und niemals als Ganzzahl entlang des Index ).

  • Eine Liste oder ein Array von Etiketten, z. ['a', 'b', 'c'].

  • Ein Slice-Objekt mit Beschriftungen, z. 'a': 'f'.

  • Ein boolesches Array von derselben Länge wie die Achse, die geschnitten wird, z. [Richtig, Falsch, Richtig].

  • Eine aufrufbare Funktion mit einem Argument (der aufrufenden Serie, dem DataFrame oder dem Bedienfeld), die eine gültige Ausgabe für die Indizierung zurückgibt (eines der folgenden )

Da ich denke, dass ii vom Typ Integer ist, müssen Sie stattdessen df.iloc verwenden:

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

Dieser Fehler tritt auch auf, wenn Ihr Index nicht mit 0 beginnt. Ich setze meinen Index unter Verwendung des folgenden Codes zurück, wodurch der Fehler behoben wurde. 

train_df = train_df.reset_index()

Dies geht nicht direkt auf das in der Frage beschriebene Problem ein, sondern wollte es hier als Referenz lassen, falls irgendwann derselbe Fehler in der Zukunft auftritt.

0
MatAff