Ранжирование столбцов по одному целому числу - PullRequest
0 голосов
/ 10 сентября 2018

Привет, я в основном пытаюсь ранжировать столбец в кадре данных в ранжирование.

это выглядит примерно так, я пытаюсь создать что-то подобное. Для человека с одинаковым количеством проданных фруктов иметь одинаковый рейтинг, чтобы при сортировке по рейтингу не было десятичных дробей. Кто-нибудь может мне посоветовать?

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

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Использование 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
0 голосов
/ 10 сентября 2018

Вы можете использовать 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
...