2017-06-14 8 views
2

Ich habe eine Pandas Datenrahmen mit einer DatetimeIndex und eine Spalte MSE Loss der Index wie folgt formatiert ist:Pandas: Auswählen von Datenrahmen Zeilen zwischen zwei Daten (Datetime-Index)

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 mehrere Tage umfasst.

Ich möchte alle Zeilen (alle Zeiten) eines bestimmten Tages auswählen, ohne die tatsächlichen Zeitintervalle zu kennen. Zum Beispiel: Zwischen 2015-07-16 07:00:00 und 2015-07-16 23:00:00

ich den Ansatz hier skizzierte versucht: here

Aber df[date_from:date_to]

Ausgänge:

KeyError: Timestamp('2015-07-16 07:00:00') 

So genauen Indizes es will. Außerdem habe ich keine date Spalte. Nur ein Index mit den Daten.

Was ist der beste Weg, um einen ganzen Tag auszuwählen, indem Sie einfach ein Datum 2015-07-16 angeben und wie kann ich dann einen bestimmten Zeitraum innerhalb eines bestimmten Tages auswählen?

Antwort

2

Option 1:

Probe 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 aus wie Sie dies versuchen, ohne .loc (wird nicht ohne sie funktionieren):

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 

Option 2:

können Sie boolean Indizierung auf dem 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')] 
2

Sie truncate verwenden können:

begin = pd.Timestamp('2015-07-16 07:00:00') 
end = pd.Timestamp('2015-07-16 23:00:00') 

df.truncate(before=begin, after=end) 
Verwandte Themen