2016-07-25 105 views
1

我是一名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

你幾乎沒有,基本上可以稱之爲reset_indexname參數去恢復「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 
+0

謝謝!它現在完美。 –