Ich habe eine große Excel-Datei mit Start- und Zielzeiten für Marathonläufer. Um die Anzahl der Läufer zu ermitteln, die sich noch auf dem Kurs befinden, habe ich versucht, die Daten in Pandas zu importieren und den eingebauten Pandas-Vergleich zu verwenden, um eine Liste der Läufer zu einer bestimmten Zeit zurückzugeben. Zu einer bestimmten Zeit x hätten Läufer auf dem Kurs eine Startzeit < = x und eine Endzeit> x. Bei Pandas gibt mir einer davon einen Fehler.Datetime-Vergleich in Pandas mit datetime.time()
Ich habe den Datenrahmen aus Excel importiert mit der read_exel
, die automatisch die Startzeiten und Endzeiten als Datetime.time
Objekte konvertiert. Hier einige Beispieldaten
df = pd.DataFrame(
{'name':['Bob','Sue','Joe'],
'start_time':[datetime.time(6,50,0),datetime.time(6,55,0),datetime.time(7,0,0)],
'start_time':[datetime.time(7,15,04),datetime.time(7,21,41),datetime.time(7,23,24)],})
Läufer beginnen bei 6:50
und ich möchte eine Liste der Menge der Läufer auf der Strecke machen alle 4
Minuten. Also ich habe einige Variablen einrichten, die zu handhaben:
race_start = datetime.datetime(100,1,1,6,50)
intervaul = datetime.timedelta(minutes = 4)
capture_time = race_start
Dann versuche ich, die richtigen Zeilen mit Pandas in Auswahl gebaut wählen
df[df.start_time <= capture_time.time() & df.end_time > capture_time.time()]
Jedoch habe ich den Fehler:
TypeError: Cannot compare datetime.time and unicode
In der Tat ist df.start_time <= capture_time.time()
vollkommen in Ordnung und läuft, aber df.end_time <= capture_time.time()
gibt diesen Fehler zurück.
Ich habe keine Ahnung, was hier vor sich geht und jede Hilfe würde geschätzt werden.
Ich werde meinen ursprünglichen Beitrag bearbeiten, um es klarer zu machen. In meiner Eile nannte ich meinen Datenrahmen pd, wenn ich in Wirklichkeit df benutze. Allerdings glaube ich nicht, dass das das Problem ist. Wenn ich 'type (df.end_time [0])' Ich bin datetime.time zurückgegeben. Außerdem bekomme ich den gleichen ursprünglichen Fehler, wenn ich den Code 'df [df.end_time> capture_time.time()] ausfühle.' Ich denke also nicht, dass es ein Gruppierungsproblem ist. –
Können Sie einige Daten hinzufügen? 3 -4 Reihen? – jezrael
Vielleicht können Sie 'df = pd.DataFrame ({'end_time': [datetime.time (10,11,10), datetime.time (11,10,23), datetime.time (12,12,4) ], 'start_time': [datetime.time (10,11,7), datetime.time (11,10,20), datetime.time (12,12)],}) ' – jezrael