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

2024-06-16 10:07:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我是个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将这些信息作为一个系列来生成,但是不能很好地处理如何生成像我所期望的输出那样的数据帧。如果可能的话,我想用一种更“Python”的方式

#Calculate trip durations
trip_dur = df.groupby(['track_id'], sort=False)['DateTime'].max() - \
        df.groupby(['track_id'], sort=False)['DateTime'].min()

感谢您的帮助, 干杯


Tags: 数据定位idfalsedfdatetimetracksort
1条回答
网友
1楼 · 发布于 2024-06-16 10:07:10

您就快到了,基本上您可以用name参数调用reset_index,以恢复“track\u 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

相关问题 更多 >