如何使用具有相同值的计数的Python rank()?

时间:2019-07-01 12:34:10

标签: python pandas rank

我正在处理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
  • 5200 4 <相同值,相同等级
  • 5100 6 <先前排名:4 + 5200s:2

首先,我尝试使用rank(method =“ dense”)函数。但是它没有按我预期的那样工作。

df_sales [“ rank”] = df_sales [“ price”]。rank(升序= False,方法=“ dense”)

谢谢。

1 个答案:

答案 0 :(得分:0)

您需要使用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

  

方法:{“平均值”,“最小”,“最大”,“第一”,“密集”}

    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选项。