Skip to main content
 首页 » 编程设计

python之对 Pandas 数据框中的元素进行排名

2025年05月04日23wayfarer

您好,我正在使用如下所示的 pandas.Dataframe:

Name           Quality 
Carrot         50 
Potato         34 
Raddish        43 
Ginger         50 
Tomato         43 
Cabbage        12 

我想将排名关联到数据框。我已经成功地能够根据字段 Quality 对 dataframe 进行排序,如下所示:

Name           Quality 
Carrot         50 
Ginger         50 
Raddish        43 
Tomato         43 
Potato         34 
Cabbage        12 

现在我想做的是,添加一个名为 Position 的新列并获得它们所在的等级。

The point is, the same rank can be given to two different elements if their quality is the same.

示例输出数据框:

Name           Quality    Position 
Carrot         50         1 
Ginger         50         1 
Raddish        43         2 
Tomato         43         2 
Potato         34         3 
Cabbage        12         4 

注意具有相同质量的两个元素如何具有相同的位置,而下面的元素具有 +1 位置。此外,数据框平均有 1000 万条记录

我如何在 Pandas.Dataframe 中执行此操作?

我按如下方式对我的 Dataframe 进行排序:

df_sort = dataframe.sort_values(by=attribute, ascending=order) 
df_sort.reset_index(drop=True) 

请您参考如下方法:

您将要使用 Rank .

排名有一些变化。您想要的是 Dense。这确保平局不会导致一半。

df['Position'] = df.Quality.rank(method='dense', ascending = False).astype(int) 
df 
      Name  Quality         Position 
0   Carrot       50              1 
1   Ginger       50              1 
2  Raddish       43              2 
3   Tomato       43              2 
4   Potato       34              3 
5  Cabbage       12              4 

出于演示目的,如果您不使用 dense 而是使用 min,您的数据框将如下所示:

      Name  Quality         Position 
0   Carrot       50              1 
1   Ginger       50              1 
2  Raddish       43              3 
3   Tomato       43              3 
4   Potato       34              5 
5  Cabbage       12              6 

这里的关键是使用ascending = False