我有这样一张table:
ID Timestamp Status
A 5/30/2022 2:29 Run Ended
A 5/30/2022 0:23 In Progress
A 5/30/2022 0:22 Prepared
B 5/30/2022 11:15 Run Ended
B 5/30/2022 9:18 In Progress
B 5/30/2022 0:55 Prepared
我想计算按ID分组的每个状态之间的持续时间。因此,生成的输出表将是:
ID Duration(min) Status change
A 0.40 In Progress-Prepared
A 125.82 Run Ended - In Progress
B 502.78 In Progress-Prepared
B 117.34 Run Ended - In Progress
如何按时间戳降序排序(按ID分组),然后从前一行减去最后一行,直到每个ID组的顶部?
3条答案
按热度按时间a64a0gku1#
您可以使用
groupby.diff
和groupby.shift
:输出:
kzipqqlq2#
您可以使用
groupby('ID')[value].shift(1)
访问同一ID
组中的上一个value
。输出:
| 识别号|持续时间|状态更改|
| - ------|- ------|- ------|
| 项目a|1个|x-y轴|
| 项目a|1个|y-z坐标|
| b.人口基金|三个|年月日|
| b.人口基金|1个|yy-zz|
PS.您可以将
time
和previous_time
减去this thread中的答案cwdobuhd3#
出局