在不改变组位置的情况下在组内排序

2024-06-25 06:05:47 发布

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

我试图在一个pandas组内进行排序,而不实际更改数据帧中的组位置。你知道吗

原始数据帧的格式如下:

    group   name  revenue
0  GroupB  Name1        1
1  GroupB  Name2        2
2  GroupB  Name3        3
3  GroupA  Name4        4
4  GroupA  Name5        5
5  GroupA  Name6        6

我正在努力取得以下成果:

    group   name  revenue
0  GroupB  Name3        3
1  GroupB  Name2        2
2  GroupB  Name1        1
3  GroupA  Name6        6
4  GroupA  Name5        5
5  GroupA  Name4        4

这是我的密码:

import pandas as pd

df = pd.DataFrame({'name': ['Name1','Name2','Name3','Name4','Name5','Name6'], 
    'group':['GroupB','GroupB','GroupB','GroupA','GroupA','GroupA'],'revenue':[1,2,3,4,5,6]})

def sort_group(grp):
    grp = grp.sort(columns='revenue',ascending=False)
    return grp

df = df.groupby('group').apply(sort_group)

print df

我得到的结果是:

           group   name  revenue
group
GroupA 5  GroupA  Name6        6
       4  GroupA  Name5        5
       3  GroupA  Name4        4
GroupB 2  GroupB  Name3        3
       1  GroupB  Name2        2
       0  GroupB  Name1        1

基本上,我现在的代码将B组移到A组之下,但我希望B组保持在顶部。你知道吗

有什么想法吗?提前谢谢。你知道吗


Tags: namepandasdfgroupsortname1revenuegrp