Pandas:按组对观察结果进行排序

2024-04-19 15:37:34 发布

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

根据对pandas groupby sort within groups的回答,为了对每组中的观察结果进行排序,需要对第一个groupby的结果执行第二个groupby。为什么需要第二个groupby?我假设在运行第一个groupby之后,观察已经被排列成组,所需要的只是枚举这些组的方法(并使用order运行apply)。


Tags: 方法pandas排序ordersortgroupsapplygroupby
2条回答

因为一旦在groupby之后应用一个函数,结果就会合并回正常的未分组数据帧中。使用groupby和类似sort的groupby方法应该被看作是Split-Apply-Combine operation

groupby将拆分原始数据帧,并将该方法应用于每个组,但随后结果将再次隐式合并。

在另一个问题上,他们可以反转操作(先排序),然后不必使用两个groupby。他们可以做到:

df.sort(['job','count'],ascending=False).groupby('job').head(3)

在这种情况下,他们需要第二个分组,因为在排序的顶部,他们只想保留每组的前3行。

如果只需要按组排序,可以执行以下操作:

df_res = df.groupby(['job','source']).agg({'count':sum}).sort_values(['job','count'],ascending=False)

一组就够了。

如果要保留每组计数最高的3行,则可以再次分组并使用head()函数:

df_res.groupby('job').head(3)

相关问题 更多 >