Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 基于组上分组的变量以外的变量在组之间排序_Python 2.7_Pandas Groupby - Fatal编程技术网

Python 2.7 基于组上分组的变量以外的变量在组之间排序

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

我想使用Pandas groupby根据每个组中的值对组进行排序。此值不是用于分组的值

我正在处理公共交通数据,这些数据告诉我不同公交出行的站点和到达时间。以下是数据帧的示例(称为
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"))