分配排名并维持重复项之间的顺序

问题描述 投票:0回答:1

我根据值分配增量排名,但需要为重复值分配相同的排名并保持整体顺序。

而不是这个:

价值 排名
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]
python pandas arcgis arcpy
1个回答
0
投票

您可以使用

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
© www.soinside.com 2019 - 2024. All rights reserved.