按单个整数对列进行排名

Ranking columns by a single integer

您好,我基本上是在尝试将数据框中的列排名到排名位置。

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

person | number of fruits sold | ranking
 A     |          5            |    2
 B     |          6            |    1
 C     |          2            |    4
 D     |          5            |    2
 E     |          3            |    3

您可以使用 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

使用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