python - 从提取的分组数据生成新的数据框

标签 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()

感谢任何帮助, 干杯。

最佳答案

您已经快到了,基本上您可以使用 name 参数调用 reset_index 来恢复“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

关于python - 从提取的分组数据生成新的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38567693/

相关文章:

python - 集合中的正则表达式

r - 如何在不使用 strptime 的情况下转换 data.table 中不明确的日期时间列?

python - 在另一个成对的bin数组中获取数据数组最小值的最快方法

javascript - 如何在angularjs中拆分日期时间

python - 无法使用sqlalchemy通过pandas.to_sql写入mysql数据库,但不能通过没有pandas的sqlalchemy

Pandas 基于其他列向列多索引添加新的二级列

python - 为 mariadb 10 Ubuntu 13.10 安装 mysqldb python 接口(interface)时找不到 mysql_config

python - scikits学习和nltk : Naive Bayes classifier performance highly different

python - Ansible python API 2.0 : run a playbook in a python script for windows clients

date - BigQuery 自动检测日期格式失败