用单个整数对列进行排名

时间:2018-09-10 10:01:02

标签: python pandas numpy series rank

嗨,我基本上是想将数据框中的一列排在排名位置。

它看起来像这样,我正在尝试创建这样的东西。对于出售相同水果数量的人,其排名也相同,因此,当我按排名对它们进行排序时,它没有小数位。谁能给我建议?

set theResult to make new type class ¬
 at location specifier ¬
 with data anything ¬
 with properties record

2 个答案:

答案 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