Python 熊猫:按组对观察结果进行排序

Python 熊猫:按组对观察结果进行排序,python,pandas,Python,Pandas,根据对的回答,为了对各组内的观察结果进行排序,需要对第一个groupby的结果进行第二次groupby。为什么需要第二个groupby?我假设在运行第一个groupby之后,观察结果已经被安排成组,所需要的只是一种枚举这些组的方法(并以顺序运行apply).因为一旦在groupby之后应用函数,结果将合并回正常的未分组数据帧。使用groupby和类似sort的groupby方法应该被看作是 groupby拆分原始数据帧,并将该方法应用于每个组,但随后将再次隐式组合结果 在另一个问题中,他们可以反

根据对的回答,为了对各组内的观察结果进行排序,需要对第一个
groupby
的结果进行第二次
groupby
。为什么需要第二个
groupby
?我假设在运行第一个
groupby
之后,观察结果已经被安排成组,所需要的只是一种枚举这些组的方法(并以
顺序运行
apply
).

因为一旦在groupby之后应用函数,结果将合并回正常的未分组数据帧。使用groupby和类似sort的groupby方法应该被看作是

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

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

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

在这种情况下,他们需要第二个group by,因为在排序的基础上,他们只想保留每组的前3行

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

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

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

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

注意:
sort
不推荐使用
sort\u值