2016-07-07 2 views
2

のは、私は、次のデータフレームがあるとしましょう:私が得る時系列データフレーム内のイベントの発生の間の時間を計算する方法

df['delta_time'] = (df['event']-df['event'].shift()).fillna(0) 

コードを使用して

df 
         A  B  C D event 
Timestamp              
1991-04-21 09:09:00 9.0 13.0 NaN NaN 100.0  
1991-04-21 17:08:00 7.0 NaN NaN NaN 119.0  
1991-04-21 22:51:00 NaN NaN 123.0 NaN NaN  
1991-04-22 07:35:00 10.0 13.0 NaN NaN 216.0  
1991-04-22 13:40:00 2.0 NaN NaN NaN NaN  
1991-04-22 16:56:00 7.0 NaN NaN NaN 211.0 

Timestamp    A  B  C D event  delta_time 

1991-04-21 09:09:00 9.0 13.0 NaN NaN 100.0  00:00:00 
1991-04-21 17:08:00 7.0 NaN NaN NaN 119.0  07:59:00 
1991-04-21 22:51:00 NaN NaN 123.0 NaN NaN  05:43:00 
1991-04-22 07:35:00 10.0 13.0 NaN NaN 216.0  08:44:00 
1991-04-22 13:40:00 2.0 NaN NaN NaN NaN  06:05:00 
1991-04-22 16:56:00 7.0 NaN NaN NaN 211.0  03:16:00 
1991-04-23 07:25:00 11.0 13.0 NaN NaN 257.0  14:29:00 

しかし私が探しているものは

Timestamp              
1991-04-21 09:09:00 9.0 13.0 NaN NaN 100.0  00:00:00 
1991-04-21 17:08:00 7.0 NaN NaN NaN 119.0  07:59:00 
1991-04-21 22:51:00 NaN NaN 123.0 NaN NaN  NaN 
1991-04-22 07:35:00 10.0 13.0 NaN NaN 216.0  13:42:00 
1991-04-22 13:40:00 2.0 NaN NaN NaN NaN  NaN 
1991-04-22 16:56:00 7.0 NaN NaN NaN 211.0  09:21:00 
1991-04-23 07:25:00 11.0 13.0 NaN NaN 257.0  14:29:00 

イベントが発生するたびに経過した時間を計算し、イベントがNaNだった時間を省略したいと思います。では、そのコードを書く正しい方法は何でしょうか。

+0

を取得するためにdiffを呼び出し、nullをしていない場所に基づいて興味のある行を隠します'] =(df [' event '] - df [' event ']。shift ())。fillna(0) 'は出力またはインテントと一致しません。これは数値のイベント列を減算するためです。 – EdChum

答えて

1

私は、これはあなたが望むものであると仮定していますTimestampがインデックスかではなく、それがインデックスではない場合、これが動作する場合、私は知らない。

In [251]: 
df['delta_time'] = df.loc[df['event'].notnull(),'Timestamp'].diff() 
df 

Out[251]: 
      Timestamp  A  B  C D event delta_time 
0 1991-04-21 09:09:00 9.0 13.0 NaN NaN 100.0   NaT 
1 1991-04-21 17:08:00 7.0 NaN NaN NaN 119.0 07:59:00 
2 1991-04-21 22:51:00 NaN NaN 123.0 NaN NaN   NaT 
3 1991-04-22 07:35:00 10.0 13.0 NaN NaN 216.0 14:27:00 
4 1991-04-22 13:40:00 2.0 NaN NaN NaN NaN   NaT 
5 1991-04-22 16:56:00 7.0 NaN NaN NaN 211.0 09:21:00 

あなたが呼び出す必要があり、必要に応じてreset_indexコラム

としてインデックスをバック復元するために基本的には「イベント」のこの行は、 `DF [ 'DELTA_TIME行間差

+0

@ EdChumありがとうございます。本当にあなたの入力を感謝 – Pearl

+0

私の答えがあなたの質問を解決した場合は、それを受け入れることができます空の目盛りは、私の答えの左上になります – EdChum