您好,我正在使用如下所示的 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
