我是Python新手。我正试图从一系列GPS修复中提取行程持续时间。我正在尝试从多个不同的轨道获取信息,并将结果放入单独的数据框中。数据如下所示(排除纬度和经度列):
track_id DateTime
0 track_1 2015-12-19 03:39:01
1 track_1 2015-12-19 14:23:21
2 track_1 2015-12-20 02:39:01
3 track_2 2016-01-02 05:44:23
4 track_2 2016-01-02 12:12:34
5 track_2 2016-01-02 19:44:33
6 track_3 2016-01-07 00:44:23
7 track_3 2016-01-07 13:11:05
8 track_3 2016-01-08 00:44:24
所需的输出看起来像这样:
track_id trip_dur
0 track_1 0 days 23:00:00
1 track_2 0 days 14:00:10
2 track_3 1 days 00:00:01
我已经设法使用groupby
将这些信息作为一个系列产生,但是如何生成像我想要的输出那样的数据框却无法完成。如果可能的话,我想以更加'pythonic'的方式做这件事。
#Calculate trip durations
trip_dur = df.groupby(['track_id'], sort=False)['DateTime'].max() - \
df.groupby(['track_id'], sort=False)['DateTime'].min()
任何帮助表示赞赏, 干杯。
答案 0 :(得分:1)
你几乎就在那里,基本上你可以用reset_index
param调用name
来恢复'track_id'列并命名聚合列:
In [44]:
(df.groupby('track_id')['DateTime'].max() - df.groupby('track_id')['DateTime'].min()).reset_index(name='trip_dur')
Out[44]:
track_id trip_dur
0 track_1 0 days 23:00:00
1 track_2 0 days 14:00:10
2 track_3 1 days 00:00:01