Ausgabe
Ich habe einen Pandas DataFrame mit einem DatetimeIndex und einer Spalte, MSE Loss
in der der Index wie folgt formatiert ist:
DatetimeIndex(['2015-07-16 07:14:41', '2015-07-16 07:14:48',
'2015-07-16 07:14:54', '2015-07-16 07:15:01',
'2015-07-16 07:15:07', '2015-07-16 07:15:14',...]
Es umfasst mehrere Tage.
Ich möchte alle Zeilen (alle Zeiten) eines bestimmten Tages auswählen, ohne die tatsächlichen Zeitintervalle genau zu kennen. Zum Beispiel: Zwischen 2015-07-16 07:00:00
und2015-07-16 23:00:00
Ich habe den hier beschriebenen Ansatz ausprobiert: hier
Aberdf[date_from:date_to]
Ausgänge:
KeyError: Timestamp('2015-07-16 07:00:00')
Es will also genaue Indizes. Außerdem habe ich keine date
Spalte. Nur ein Index mit den Daten.
Wie kann ich am besten einen ganzen Tag auswählen, indem ich nur ein Datum angebe, 2015-07-16
und wie kann ich dann einen bestimmten Zeitraum innerhalb eines bestimmten Tages auswählen?
Lösung
Möglichkeit 1 :
Beispiel df:
df
a
2015-07-16 07:14:41 12
2015-07-16 07:14:48 34
2015-07-16 07:14:54 65
2015-07-16 07:15:01 34
2015-07-16 07:15:07 23
2015-07-16 07:15:14 1
Es sieht so aus, als würden Sie dies ohne versuchen .loc
(funktioniert nicht ohne):
df.loc['2015-07-16 07:00:00':'2015-07-16 23:00:00']
a
2015-07-16 07:14:41 12
2015-07-16 07:14:48 34
2015-07-16 07:14:54 65
2015-07-16 07:15:01 34
2015-07-16 07:15:07 23
2015-07-16 07:15:14 1
Möglichkeit 2 :
Sie können die boolesche Indizierung für den Index verwenden:
df[(df.index.get_level_values(0) >= '2015-07-16 07:00:00') & (df.index.get_level_values(0) <= '2015-07-16 23:00:00')]
Beantwortet von – Andrew L
Antwort geprüft von – Jay B. (FixError Admin)