2017-12-21 33 views
2

減算最小のタイムスタンプ

Iter ID  Time 
0 1  A  12:00:00 
1 1  B  12:00:01 
2 1  C  12:00:01 
3 2  B  12:02:00 
4 2  A  12:02:02 
5 2  C  12:02:06 
6 3  C  12:05:01 
7 3  B  12:05:00 
8 3  A  12:05:05 

私はそれがその反復のために最低限のタイムスタンプだから、各タイムスタンプのオフセットを取得したいと思います。

たとえばこの例では「デルタ」の欄には、可能性があり

Iter ID  Time  Delta 
0 1  A  12:00:00 00:00:00 
1 1  B  12:00:01 00:00:01 
2 1  C  12:00:01 00:00:01 
3 2  B  12:02:00 00:00:00 
4 2  A  12:02:02 00:00:02 
5 2  C  12:02:06 00:00:06 
6 3  C  12:05:01 00:00:01 
7 3  B  12:05:00 00:00:00 
8 3  A  12:05:05 00:00:05 

私の最初の考えは適用を使用することでしたが、イーターのグループだけでそれを行う方法がわかりません。

答えて

3

groupby + transform + minでこれを行い、結果をTimeから引きます。

df.Time = pd.to_timedelta(df.Time) # if needed 
df['Delta'] = df.Time - df.groupby('Iter').Time.transform('min') 

df 

    Iter ID  Time Delta 
0  1 A 12:00:00 00:00:00 
1  1 B 12:00:01 00:00:01 
2  1 C 12:00:01 00:00:01 
3  2 B 12:02:00 00:00:00 
4  2 A 12:02:02 00:00:02 
5  2 C 12:02:06 00:00:06 
6  3 C 12:05:01 00:00:01 
7  3 B 12:05:00 00:00:00 
8  3 A 12:05:05 00:00:05 

Iは(演算がサポートされている)TimedeltaオブジェクトのカラムにTimeを変換するpd.to_timedeltaを使用しました。 Timeが既にTimedeltaの場合は、その手順をスキップしてください。

+1

@ayhanああ、そうだった。完璧な今、歓声(また、あなたのコメントの前にtimedeltaを編集していた) –

+1

うん、それを見た。 :) – ayhan

+1

うわー、ありがとう!それは私が思ったよりはるかに簡単でした。 – sid