我有一个熊猫数据框,如下所示。
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
2
3
有没有办法在python的熊猫中做到这一点?
很高兴在需要时提供更多详细信息。
答案 0 :(得分:3)
使用整数除以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