首页 > 解决方案 > 如何使用具有相同值计数的 Python rank()?

问题描述

我正在处理python中的数据框。

这就是我想要做的。

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

这就是我的意图

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

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

先感谢您。

标签: pythonpandasrank

解决方案


您需要使用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', 'min', 'max', 'first', 'dense'}

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


推荐阅读