python - 格式化两列的熊猫表排序
问题描述
我需要帮助格式化我的表格。这是一个更简单的版本,我将用一个例子来解释它。如果我有一张如下表:
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
什么是最好的方法来做到这一点。有任何想法吗?
解决方案
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