问题
我想按组计算diff
,但我不知道如何对time
列进行排序,以使每个组的结果都是排序和正数。
原始数据:
In [37]: df
Out[37]:
id time
0 A 2016-11-25 16:32:17
1 A 2016-11-25 16:36:04
2 A 2016-11-25 16:35:29
3 B 2016-11-25 16:35:24
4 B 2016-11-25 16:35:46
我想要的结果
Out[40]:
id time
0 A 00:35
1 A 03:12
2 B 00:22
注意:时间列的类型为timedelta64 [ns]
尝试中
In [38]: df['time'].diff(1)
Out[38]:
0 NaT
1 00:03:47
2 -1 days +23:59:25
3 -1 days +23:59:55
4 00:00:22
Name: time, dtype: timedelta64[ns]
没有得到期望的结果。
希望
不仅要解决问题,而且代码要能够快速运行,因为有5000万行。
df = df.sort_values(['id','time'])
,然后才能执行df.groupby('id')['time'].diff()
。 - EdChum