2016-08-10 3 views
3

ich Pandas Series ‚df‘ wie folgtPython: Pandas Series - Unterschied zwischen aufeinanderfolgenden Datetime-Reihen in Sekunden

     value  
date_time_index   
2015-10-28 01:54:00  1.0 
2015-10-28 01:55:00  1.0 
2015-10-28 01:56:00  1.0 
2015-10-28 01:57:00  1.0 
2015-10-28 01:58:00  1.0 

und ich möchte nur eine neue Spalte mit dem Unterschied in Sekunden zwischen aufeinander folgenden Reihen genannt habe , Wie kann ich das machen?

Hinweis: Der Typ ist

type(df.index[1]) 

gegeben als

pandas.tslib.Timestamp 
+1

haben Sie versucht df.diff() http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.diff.html –

+0

ja Ich habe es schon seit einer Stunde versucht, aber ich bekomme einen Unterschied wie '0 Tage 00:00:01'. Ich kann das nicht in Sekunden bringen. Es muss einen einfachen Weg geben, wonach ich suche. –

+2

http://StackOverflow.com/Q/26456825/3765319 Nachdem Sie mit ".diff" subtrahiert haben, verbleibt eine TimeDelta-Spalte. Diese Antwort sollte dir helfen. – Kartik

Antwort

5

Ich würde es tun, wie folgt:

df.index.to_series().diff().dt.total_seconds().fillna(0) 

date_time_index 
2015-10-28 01:54:00  0.0 
2015-10-28 01:55:00 60.0 
2015-10-28 01:56:00 60.0 
2015-10-28 01:57:00 60.0 
2015-10-28 01:58:00 60.0 
Name: date_time_index, dtype: float64 
1

denke ich Ive es funktionierte

mit aus
df['temp_index'] = df.index 
df['Delta'] = df['temp_index'].diff().astype('timedelta64[m]') 

in Minuten statt Sekunden (ändern m s für Sekunden)

Verwandte Themen