从提取的分组数据生成新数据帧

时间:2016-07-25 12:23:38

标签: python datetime pandas dataframe

我是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()

任何帮助表示赞赏, 干杯。

1 个答案:

答案 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