嗨,我基本上是想将数据框中的一列排在排名位置。
它看起来像这样,我正在尝试创建这样的东西。对于出售相同水果数量的人,其排名也相同,因此,当我按排名对它们进行排序时,它没有小数位。谁能给我建议?
set theResult to make new type class ¬
at location specifier ¬
with data anything ¬
with properties record
答案 0 :(得分:1)
您可以使用pd.factorize
。这里有一些技巧:小心否定系列,指定sort=True
,为所需的结果加1。
df['ranking'] = pd.factorize(-df['number of fruits sold'], sort=True)[0] + 1
结果:
person number of fruits sold ranking
0 A 5 2
1 B 6 1
2 C 2 4
3 D 5 2
4 E 3 3
答案 1 :(得分:0)
使用Series.rank
:
df['ranking'] = df['number of fruits sold'].rank(method='dense', ascending=False).astype(int)
print (df)
person number of fruits sold ranking
0 A 5 2
1 B 6 1
2 C 2 4
3 D 5 2
4 E 3 3