2016-09-09 3 views
1

Ich habe einen Datenrahmen df:Iteration durch eine Reihe von Zeitstempeln in Python

TIMESTAMP equipement1 equipement2 
2016-05-10 13:20:00 0.000000 0.000000 
2016-05-10 14:40:00 0.400000 0.500000 
2016-05-10 15:20:00 0.500000 0.500000 

Iam versuchen, durch Zeitstempel für Schritt von 5 Minuten zu wiederholen. Ich versuche: pd.date_range(start, end, freq='5 minutes')

Aber ich bekomme ein Problem mit Timestamp-Format.

" ValueError: Could not evaluate 5 minutes"

Irgendeine Idee, die mir hilft, dieses Problem zu lösen?

Danke

+1

von 'pd' Ich rate, dass Sie pandas Bibliothek verwenden. Sie sollten dieses Tag hinzufügen. –

+0

Ich bekomme diesen Fehler: "ValueError: Konnte nicht 5 Minuten auswerten" – Poisson

Antwort

3

Zuerst Ihre TIMESTAMP-Spalte ein Datetime statt einer Zeichenfolge (z df['TIMESTAMP'] = pd.to_datetime(df.TIMESTAMP)) stellen Sie sicher.

Als nächstes verwenden Sie diese Spalte als Index des Datenrahmens. Um dies dauerhaft zu machen, df.set_index('TIMESTAMP, inplace = True) `.

Nun kann resample für jede gegebene Frequenz (z.B. 30min) und verschiedene Methoden der Aggregation verwenden wie sum, mean (Standard), eine Lambda-Funktion, usw.).

Optional können Sie .fillna(0) hinzufügen, um die NaNs durch Nullen zu ersetzen.

>>> df.set_index('TIMESTAMP').resample('30min', how='sum') 

        equipement1 equipement2 
TIMESTAMP          
2016-05-10 13:00:00   0.0   0.0 
2016-05-10 13:30:00   NaN   NaN 
2016-05-10 14:00:00   NaN   NaN 
2016-05-10 14:30:00   0.4   0.5 
2016-05-10 15:00:00   0.5   0.5 
+0

danke, im Falle der Lambda-Funktion, mache ich wie = 'Lambda' und dann erstelle ich eine Funktion Lambda def Lambda? Ist es ? danke – Poisson

+0

'df.set_index ('TIMESTAMP'). resample ('30min', wie = lambda group: group.sum())' – Alexander

Verwandte Themen