如何在python中修改pandas中的排名
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在python中修改pandas中的排名相关的知识,希望对你有一定的参考价值。
我有一个pandas数据帧如下。
item x1 x2 x3 x4 x5 ratings
item1 x x x x x 46
item1 x x x x x 32
item1 x x x x x 16
item1 x x x x x 6
item1 x x x x x 36
item1 x x x x x 36
item1 x x x x x 12
item1 x x x x x 13
item1 x x x x x 41
item1 x x x x x 42
item1 x x x x x 43
item1 x x x x x 3
item1 x x x x x 76
item1 x x x x x 36
item1 x x x x x 26
item1 x x x x x 12
item1 x x x x x 11
item1 x x x x x 88
item1 x x x x x 87
item1 x x x x x 78
item1 x x x x x 43
item1 x x x x x 42
现在,我想用rankings
的ratings
添加另一列。
我做得很好用;
df = df.assign(rankings=df.rank(ascending=False))
我想再次重新排列排名列,并在数据框中添加不同的列,如下所示。
- 排名从1-10 - >获得排名
1
- 排名从11-20 - >获得排名
2
- 排名从21-30 - >获得排名
3
- 等等
有没有办法在python中的pandas中做到这一点?
如果需要,我很乐意提供更多细节。
答案
使用10
的整数除法并添加1
,最后转换为整数:
df = df.assign(rankings=df['ratings'].rank(ascending=False))
df['new'] = (df['rankings'] // 10 + 1).astype(int)
print (df)
item x1 x2 x3 x4 x5 ratings rankings new
0 item1 x x x x x 46 5.0 1
1 item1 x x x x x 32 14.0 2
2 item1 x x x x x 16 16.0 2
3 item1 x x x x x 6 21.0 3
4 item1 x x x x x 36 12.0 2
5 item1 x x x x x 36 12.0 2
6 item1 x x x x x 12 18.5 2
7 item1 x x x x x 13 17.0 2
8 item1 x x x x x 41 10.0 2
9 item1 x x x x x 42 8.5 1
10 item1 x x x x x 43 6.5 1
11 item1 x x x x x 3 22.0 3
12 item1 x x x x x 76 4.0 1
13 item1 x x x x x 36 12.0 2
14 item1 x x x x x 26 15.0 2
15 item1 x x x x x 12 18.5 2
16 item1 x x x x x 11 20.0 3
17 item1 x x x x x 88 1.0 1
18 item1 x x x x x 87 2.0 1
19 item1 x x x x x 78 3.0 1
20 item1 x x x x x 43 6.5 1
21 item1 x x x x x 42 8.5 1
以上是关于如何在python中修改pandas中的排名的主要内容,如果未能解决你的问题,请参考以下文章
PANDAS 中类似 SQL 的窗口函数:Python Pandas Dataframe 中的行编号
如何使用字符串列表在 Python 3 中搜索 pandas 数据框