如何在DataFrame中对字段进行稠密排名,使最大值对应排名1?
解决Pandas DataFrame稠密排名问题
你当前的代码没得到预期结果,是因为rank()方法默认使用method='average'——当数据里存在重复值时,会对重复值的排名取平均值,这就导致最大值的排名不是1而是402.50。
要实现你需要的稠密排名(最大值排1,相同数值同排名,后续排名连续递增),只需在rank()里显式指定method='dense'参数,同时保留ascending=False:
df['DenseRank'] = df['CountsOfCircuits'].rank(ascending=False, method='dense')
简单解释下几个常用的method参数区别:
'average':默认行为,重复值取平均排名'dense':稠密排名,相同值共享同一排名,下一个不同值排名直接+1'min':重复值取它们的最小排名'max':重复值取它们的最大排名
内容的提问来源于stack exchange,提问作者ASH
相关产品推荐
相关产品推荐

