首页 > 解决方案 > 排名不重复

问题描述

我正在尝试使用 python 对大型数据集进行排名。我不希望重复,而不是使用“第一个”方法,而是希望它查看另一列并根据该值对其进行排名。

如果第一列中的排名有重复,它应该只查看第二列。

Name   CountA CountB
Alpha  15     3
Beta   20     52
Delta  20     31
Gamma  45     43

我希望排名最终

Name   CountA CountB Rank
Alpha  15     3      4
Beta   20     52     2
Delta  20     31     3
Gamma  45     43     1

目前,我正在使用df.rank(ascending=False, method='first')

标签: pythonpandas

解决方案


也许使用排序并拉出索引:

import pandas as pd
df = pd.DataFrame({'Name':['A','B','C','D'],'CountA':[15,20,20,45],'CountB':[3,52,31,43]}) 
df['rank'] = df.sort_values(['CountA','CountB'],ascending=False).index + 1 

  Name  CountA  CountB  rank
0    A      15       3     4
1    B      20      52     2
2    C      20      31     3
3    D      45      43     1

推荐阅读