我正在尝试计算某些组的两次操作之间的平均时间。数据框如下所示:
Name, Action_ID, Start_Time, End_Time
A, 11, 2019-05-01 09:10:00, 2019-05-01 09:20:00
A, 12, 2019-05-01 09:30:00, 2019-05-01 09:40:00
A, 13, 2019-05-01 09:50:00, 2019-05-01 10:00:00
B, 11, 2019-05-01 09:20:00, 2019-05-01 09:40:00
B, 12, 2019-05-01 09:45:00, 2019-05-01 09:55:00
我想按名称分组,并获取上一个动作的开始时间和结束时间之间的平均时间。所以基本上是这样的:
Name, Avg_Time_Elapsed
A, 10
B, 5
我用以下代码创建了一个名为delta的新列:
df['delta'] = df['Start_Time'] - df['End_Time'].shift(-1)
但是它给我一个奇怪的结果,因为它显示出差异是-1天而不是分钟/秒。用python编写此代码的任何优雅方法吗?谢谢
答案 0 :(得分:1)
IIUC,您确实需要 date type x z y
0 2018-01-01 A 10 1 1
1 2018-01-01 B 50 0 1
2 2018-02-01 B 30 0 0
3 2018-03-01 A 20 0 0
4 2018-03-01 B 70 1 0
5 2018-03-01 C 30 1 0
6 2018-04-01 A 10 1 1
7 2018-04-01 B 60 0 1
8 2018-05-01 B 30 0 0
9 2018-06-01 A 50 1 1
10 2018-06-01 B 20 0 1
11 2018-06-01 C 30 1 1
12 2018-07-01 A 10 0 0
13 2018-08-01 B 90 1 0
14 2018-08-01 C 30 1 0
15 2018-09-01 A 20 1 1
16 2018-09-01 B 70 0 1
17 2018-10-01 C 30 0 1
18 2018-10-01 A 60 1 1
19 2018-10-01 B 80 1 1
20 2018-11-01 A 20 0 0
21 2018-12-01 B 70 0 0
22 2018-12-01 C 90 1 0
groupby