首页 > 解决方案 > 熊猫对重复值进行排名

问题描述

让我们取一列具有随机值的数据框。我想通过以下方式轻松获得所有这些值的排名:

df.rank()

但是,如果有重复的值,您也会得到排名的重复值。例如,对于给定的数字列表:

[127.0, 131.856, 132.88, 126.249, 128.417, 124.336, 131.856, 130.624, 147.906, 134.412, 130.735, 133.433, nan, 125.59, 130.211, 133.847, 137.431, 130.0, 127.4, 132.226, 138.134]

rank 函数的输出将是:

[4.0, 11.5, 14.0, 3.0, 6.0, 1.0, 11.5, 8.0, 20.0, 17.0, 9.0, 15.0, nan, 2.0, 7.0, 16.0, 18.0, 10.0, 5.0, 13.0, 19.0]

如您所见,位置 1 和 6 相同,完整列表中没有 11 或 12。 即使哪个排在第一位是任意的,我们如何才能获得这些数字的排名?

标签: pythonpandasrank

解决方案


使用 中的method参数rank,例如:

pd.Series(l).rank(method='first')

0      4.0
1     11.0
2     14.0
3      3.0
4      6.0
5      1.0
6     12.0
7      9.0
8     20.0
9     17.0
10    10.0
11    15.0
12     2.0
13     8.0
14    16.0
15    18.0
16     7.0
17     5.0
18    13.0
19    19.0
dtype: float64

推荐阅读