首页 > 解决方案 > 格式化两列的熊猫表排序

问题描述

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

Col1    Col2

    A   8
    B   2
    C   3
    A   4
    B   5
    C   6
    A   7
    B   1
    C   9

我希望将它安排在 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

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

标签: pythonpandas

解决方案


sort_values您可能需要为by创建帮助键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

推荐阅读