iloc und get_loc 'Key Error'

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
potyh
User
Beiträge: 5
Registriert: Mittwoch 18. Dezember 2019, 09:49

Guten Morgen,

bei der Verwendung von iloc und get_loc bekomme ich einen Key Error. Ich dachte, dass ich das problem mit try und except lösen kann. Funktionierte aber nicht...

Mein Code ist:

Code: Alles auswählen

for d in range (index_range):
                date_loc2 = date_loc + d
                                         
                try:
                    V_i= data_vol.iloc[date_loc2, data_vol.columns.get_loc (s)]
                except KeyError:
                    V_i= "nAn"

Ich weis, dass 's' Werte annimmt, die nicht in data_vol enthalten sind.

Wisst ihr eine Möglichkeit dieses Problem zu lösen?

Vielen Dank
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Code sollte man in Python mit 4 Leerzeichen einrücken.

Variablen schreibt man in Python nach Kovention klein_mit_unterstrich. Und sie sollten sprechende Namen haben.

Was ist data_vol ?

Wie lautet die vollständige Fehlermeldung inkl. Stacktrace?
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

"Funktionierte aber nicht..." ist eine ganz schlechte Fehlerbeschreibung. Was willst Du erreichen? Was ist statt dessen das Verhalten des Programms?
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

Bitte vollständigen Code posten. Was ist `index_range`? Was ist `s`? Was ist... usw.? Was sind das alles für Daten (-typen)? Ich vermute Pandas DataFrames. Ohne Beschreibung was da passieren soll und was passiert, wirds schwer hier zu helfen. Bitte auch den vollständigen Fehler posten.
potyh
User
Beiträge: 5
Registriert: Mittwoch 18. Dezember 2019, 09:49

data_vol= Daten für das Handelsvolumen

V_i = Handelsvolumen von Unternehmen i

Ich möchte gerne erreichen, dass ich mit i.loc/get.loc das Handelsvolumen für das Unternehmen 's' am Tag date_loc2 aus einer Tabelle ablese.
s nimmt den Wert eines Identifiers an.
Problem ist, dass 's' Identifier annehmen kann, die nicht in der Tabelle existieren.
Tabelle hat folgenden Aufbau:
Index=Datum, Spaltennamen=Identifier für Unternehmen, Zelleninhalt=Handelsvolumen

Meine Fehldermeldung lautet: Key Error 'AABC' (wobei 'AABC' ein Identifier ist)

Braucht ihr noch andere Infos?
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Die _vollständige_ Fehlermeldung. Denn die beinhaltet auch die Zeile, in der das Problem auftritt.

Welche für Daten da drin stehen ist nicht wichtig. Aber es ist wicht _was_ data_vol ist. Also was für ein Typ.
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Den KeyError fängst Du aber ab, die Fehlermeldung kann also nicht kommen. Oder sie kommt an einer ganz anderen Stelle, dann brauchen wir aber den kompletten Traceback und den relevanten Code dazu.
Warum heißt eine Tabelle, die das Handelsvolument enthält data_vol und nicht trading_volume?
Warum heißt ein Unternehmen einfach nur `i`. Und was soll die for-Schleife, wenn das Unternehmen `i` ja anscheinend fix ist und Du direkt auf die passende Spalte über den Identifier zugreifen könntest?
Antworten