问题描述
我的df.shape
(500,15)的数据框在(-1,1)之间具有不同的值。
df.head()
0 -0.2966 -0.1140 ... 0.4699 0.1250
1 -0.3051 -0.1157 ... 0.6686 0.3290
2 -0.2014 -0.1427 ... 0.4758 0.4919
3 -0.2703 -0.0928 ... 0.6004 0.2436
4 -0.3399 -0.0964 ... 0.3777 0.4808
我想创建一个单独的数据框,以给出该特定行中列的排名。 例如,df_rank(单独的df)第一行将是排名不变,该行中最大的数字排名为1,最低的排名为15,而无需更改位置/排序。第二行也一样,依此类推。
df_rank
0 11 8.... 3 7
1 12 8.... 1 3
2 13 7.... 2 4
3 11 6.... 3 6
4 12 6.... 2 7
对于所有500行...
解决方法
df = df.rank(axis=1,ascending=False,method='dense').astype(int)
print (df)
0 1 2 3
0 4 3 1 2
1 4 3 1 2
2 4 3 2 1
3 4 3 1 2
4 4 3 2 1