我根据值分配增量排名,但需要为重复值分配相同的排名并保持整体顺序。
而不是这个:
价值 | 排名 |
---|---|
400 | 1 |
500 | 2 |
175 | 3 |
250 | 4 |
120 | 5 |
250 | 6 |
我需要这个:
价值 | 排名 |
---|---|
500 | 1 |
400 | 2 |
250 | 3 |
250 | 3 |
175 | 5 |
120 | 6 |
我实际上是在 ArcGIS Pro 工具箱脚本中执行此操作。
到目前为止,我只做到了这一点,还没有解决重复问题:
d = {'value': [500,120,175,400,250,250], 'rank': [0,0,0,0,0,0]
df = pd.DataFrame(data=d)
rank1 = df['value']
rank1 = rank1.sort_values(ascending=False)
rank1 = rank1.to_numpy()
rank2 = np.arange(1,len(rank1)+1,1)
rank1: [500 400 250 250 175 120] rank2: [1 2 3 4 5 6]
Desired output is: rank2: [1 2 3 3 5 6]
rank
:
df["rank"] = df["value"].rank(method="min", ascending=False).astype(int)
value rank
0 500 1
1 120 6
2 175 5
3 400 2
4 250 3
5 250 3