python - 如何在python中修改熊猫的排名
问题描述
我有一个熊猫数据框,如下所示。
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
of添加另一列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
推荐阅读
- mysql - Docker CodeIgniter MariaDb 连接被拒绝
- python - 具有日期时间索引的 Pandas 数据框在每月的第 n 天重新采样
- c++ - 无论分辨率和纵横比如何,全球规模?
- android - 根据数量显示总计并显示总计、项目名称、费率等
- c - 为什么在我输入学生分数之前此代码退出?
- python - 如何在火花斯卡拉(不是pyspark)中使用熔化功能
- php - 收到此错误 stream_socket_enable_crypto(): Peer certificate CN=`srv112.hostserv.co.za' did not match expected CN=`smtp.office365.com'
- python - 我试图打印1~50范围内的偶数的这个函数有什么问题
- r - R 问题:如何保存回归输出以便我可以使用 mtable
- oracle - 无法确定“ORA-00922:缺少或无效选项”错误的原因