从熊猫中的每个其他时间戳减去每个组的最小时间戳

joh*_*ohn 4 python dataframe pandas pandas-groupby

我有一个这样的DataFrame:

   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
Run Code Online (Sandbox Code Playgroud)

我想从每次迭代的最小时间戳中获取每个时间戳的偏移量。

例如,此示例的“ Delta”列可以为

   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
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是使用Apply,但不确定如何仅对Iter组使用它。

cs9*_*s95 5

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
Run Code Online (Sandbox Code Playgroud)

我曾经pd.to_timedelta转换TimeTimedelta对象的列(支持算术)。如果Time已经是一Timedelta列,请跳过该步骤。