Как я могу использовать Python rank () с одинаковыми значениями? - PullRequest
1 голос
/ 01 июля 2019

Я имею дело с фреймом данных в python.

Вот что я хочу сделать.

1. same value gets same rank
2. the next rank should be added as much as the same rank counts

Это то, что я намеревался

  • ценовой ранг
  • 5300 1
  • 5300 1
  • 5300 1
  • 5200 4 <предыдущий ранг: 1 + число 5300 с: 3 </li>
  • 5200 4 <то же значение, тот же ранг </li>
  • 5100 6 <предыдущий ранг: 4 + количество 5200 с: 2 </li>

Сначала я попытался использовать функцию ранга (method = "плотный").Но это не сработало, как я ожидал.

df_sales ["rank"] = df_sales ["price"]. Rank (ascending = False, method = "density")

Спасибо вам завперед.

1 Ответ

0 голосов
/ 01 июля 2019

Вам необходимо использовать method='min' и ascending=False:

df = pd.DataFrame({'x':[5300,5300,5300,5200,5200, 5100]})
df['r'] = df['x'].rank(method='min', ascending=False)

С pandas.Series.rank

метод: {'средний','min', 'max', 'first', 'density'}

    average: average rank of group
    min: lowest rank in group
    max: highest rank in group
    first: ranks assigned in order they appear in the array
    dense: like ‘min’, but rank always increases by 1 between groups

Обратите внимание, что dense специально увеличивает ранг на 1 в группах.Вы хотите min вариант.

...