格式化两列的pandas表排序

A.D*_*.DS 2 python pandas

我需要帮助格式化表格.这是一个更简单的版本,我将用一个例子来解释它.如果我有一张表如下:

Col1    Col2

    A   8
    B   2
    C   3
    A   4
    B   5
    C   6
    A   7
    B   1
    C   9
Run Code Online (Sandbox Code Playgroud)

我希望它安排在col2的最高值出现的地方.在这种情况下,它是来自帐户C的9.因此,所有帐户C值都遵循,按Col2顺序排列.接下来,最高值由帐户A显示,因此所有帐户A值都遵循,再次以Col2值顺序排列.决赛桌应该是这样的:

Col1    Col2
C   9
C   6
C   3
A   8
A   7
A   4
B   5
B   2
B   1
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法来做到这一点.有任何想法吗?

WeN*_*Ben 5

您可能需要为sort_valuesby 创建帮助键groupby transform

df['helperkey']=df.groupby('Col1').Col2.transform('max')
df.sort_values(['helperkey','Col2'],ascending=[False,False]).drop('helperkey',1)
Out[102]: 
  Col1  Col2
8    C     9
5    C     6
2    C     3
0    A     8
6    A     7
3    A     4
4    B     5
1    B     2
7    B     1
Run Code Online (Sandbox Code Playgroud)