Python 2.7 基于组上分组的变量以外的变量在组之间排序
我想使用Pandas groupby根据每个组中的值对组进行排序。此值不是用于分组的值 我正在处理公共交通数据,这些数据告诉我不同公交出行的站点和到达时间。以下是数据帧的示例(称为Python 2.7 基于组上分组的变量以外的变量在组之间排序,python-2.7,pandas-groupby,Python 2.7,Pandas Groupby,我想使用Pandas groupby根据每个组中的值对组进行排序。此值不是用于分组的值 我正在处理公共交通数据,这些数据告诉我不同公交出行的站点和到达时间。以下是数据帧的示例(称为stopTimes): 我想根据到达第一站的时间对行程进行分类。因此,上述数据帧的排序结果将是: trip_id stop_sequence arrival_time 2 1 07:05:30 2 2 16:01:00 2
stopTimes
):我想根据到达第一站的时间对行程进行分类。因此,上述数据帧的排序结果将是:
trip_id stop_sequence arrival_time
2 1 07:05:30
2 2 16:01:00
2 3 16:45:00
1 1 09:00:40
1 2 12:03:00
1 3 15:08:00
我已经能够通过以下方式实现这一结果:
timeSortedTrips = stopTimes.loc[stopTimes['stop_sequence']==1].sort_values('arrival_time')['trip_id']
stopTimes['trip_id'] = pd.Categorical(stopTimes['trip_id'],timeSortedTrips)
stopTimes = stopTimes.sort_values(['trip_id','arrival_time'])
然而,我很好奇:我能用groupby实现这一点吗?如果是的话,效率会更高吗?另外,我是Python新手,所以如果您有更好的方法来进行排序,请告诉我这个方向。您可以按
trip\u id
分组,并在每个组中按到达时间进行排序
stopTimes.arrival_time = pd.to_datetime(stopTimes.arrival_time)
stopTimes = stopTimes.groupby("trip_id", as_index=False).apply(lambda x: x.sort("arrival_time"))
这似乎不起作用,我无法立即找到原因。我得到了这个错误:'DataFrame'对象没有属性'sort'
。知道怎么了吗?我不知道为什么。这对我有用。您可以尝试对值进行排序而不是排序吗。
stopTimes.arrival_time = pd.to_datetime(stopTimes.arrival_time)
stopTimes = stopTimes.groupby("trip_id", as_index=False).apply(lambda x: x.sort("arrival_time"))