我是熊猫新手。我需要根据组内的循环顺序以降序对数据值进行排序和分组。我有以下数据框:
Col1 Col2
A 5030
B 4250
c 3340
D 2100
A 5044
B 4790
C 3482
C 3233
A 5099
B 4820
D 2345
D 2784
A 5999
我需要对数据帧进行排序,以使所有值Col2
按Col1
从高到低的顺序循环排列。例如,将首先对(A,B,C,D)的所有最高值进行排序,然后再跟随(A,B,C,D)的第二高值,然后是(A,B,3 B,C,D)组需要关注,依此类推。
排序后,最终的数据帧应如下所示:
Col1 Col2
A 5999
B 4820
C 3482
D 2784
A 5099
B 4790
C 3340
D 2345
A 5044
B 4250
C 3233
D 2100
A 5030
Col1
除(A,B,C,D)外,将没有其他任何值。但是在某些情况下,中可能只有2个或3个不同的值Col1
。因此,需要相应地制定逻辑。
我可以按照以下步骤解决问题:
Col1
。Col2
。此过程似乎不是最佳方法。因此,我正在寻找有关更简单的本机解决方案的建议。
IIUC使用创建新密钥 cumcount
df['Key']=df.sort_values('Col2',ascending=False).groupby('Col1').cumcount()
df=df.sort_values(['Key','Col1']).drop('Key',1)
df
Out[453]:
Col1 Col2
12 A 5999
9 B 4820
6 C 3482
11 D 2784
8 A 5099
5 B 4790
2 C 3340
10 D 2345
4 A 5044
1 B 4250
7 C 3233
3 D 2100
0 A 5030
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句