python - 熊猫对重复值进行排名
问题描述
让我们取一列具有随机值的数据框。我想通过以下方式轻松获得所有这些值的排名:
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。 即使哪个排在第一位是任意的,我们如何才能获得这些数字的排名?
解决方案
使用 中的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
推荐阅读
- c# - C# 反射表达式 Linq
- f# - 在 f# 中从字符串列表的给定路径创建树
- python - 使用装饰器参数进行切换
- python - 在使用 pandas 读取 df 中的 sql 后,来自 oracle sql 数据库的大 int 值变为负数
- java - 单线程中的 JPA 乐观锁异常
- java - java - 如何对具有逗号而不是小数的Java中的数字执行数学运算?
- python - 在将一些矩阵块相互附加期间无法理解的数据类型
- javafx - 无法在 Ubuntu 18.04.1 LTS 中的 Eclipse 上启用 Javafx
- r - R求解器优化
- mysql - 将 MySql 日期更新为给定月份的最后一天