pandas-不同组的最后一个事件之间的时间差

问题描述 投票:0回答:1

我有一个消息的数据帧,它们的发送者和时间。它看起来类似于:

Time           Person    Message
8:00           A         '1'
8:01           B         '2'
8:02           B         '3'
8:05           A         '4'
9:04           B         '5'

我想计算一个人对另一个人的最后一条消息作出回复所花费的时间。即得到以下内容:

Time           Person    Message     TimeDiff(in min)
8:00           A         '1'         0
8:01           B         '2'         1
8:02           B         '3'         2
8:05           A         '4'         3
9:04           B         '5'         59

我如何达到这个目标?

编辑:请注意,这与Time col中的最后一个元素不是简单的差异,因为它取决于Person列。参见示例。

python pandas
1个回答
0
投票

您可以使用日期时间序列来计算差异。

首先使用pd.to_datetime获得意甲:

date_time_serie=pd.to_datetime(df['Time'] ,format = '%H:%M')

然后使用diffdt.second计算差:

df['TimeDiff(in min)']=date_time_serie.diff().fillna(pd.Timedelta(0)).dt.seconds/60
df['TimeDiff(in min)']=df['TimeDiff(in min)'].astype(int)
print(df)

   Time Person Message  TimeDiff(in min)
0  8:00      A     '1'                 0
1  8:01      B     '2'                 1
2  8:02      B     '3'                 1
3  8:05      A     '4'                 3
4  9:04      B     '5'                59
© www.soinside.com 2019 - 2024. All rights reserved.