如何在Python中按秩顺序转换点列值
我有这样一个熊猫数据框:如何在Python中按秩顺序转换点列值,python,pandas,Python,Pandas,我有这样一个熊猫数据框: id1 id2 Points 1 1a 0.34 1 1a 0.34 1 2a 0.23 1 3a 0.71 2 73a 0.52 2 43a 0.2 2 43a 0.2 2 34a
id1 id2 Points
1 1a 0.34
1 1a 0.34
1 2a 0.23
1 3a 0.71
2 73a 0.52
2 43a 0.2
2 43a 0.2
2 34a 0.83
3 23a 0.53
3 9a3 0.13
好的,事情是这样的。如果多行的id1
和id2
相同,则点也与这些行相同
我想把这些分数转换成等级。不同的id1不同。如果两个人拥有相同的id1
和id2
,那么排名也将相同
预期产出:
id1 id2 Points Rank
1 1a 0.34 2
1 1a 0.34 2
1 2a 0.23 3
1 3a 0.71 1
2 73a 0.52 2
2 43a 0.2 3
2 43a 0.2 3
2 34a 0.83 1
3 23a 0.53 1
3 9a3 0.13 2
请告诉我,如果我不清楚,请与参数一起使用
df['new'] = df.groupby('id1')['Points'].rank('dense', ascending=False).astype(int)
print (df)
id1 id2 Points new
0 1 1a 0.34 2
1 1 1a 0.34 2
2 1 2a 0.23 3
3 1 3a 0.71 1
4 2 73a 0.52 2
5 2 43a 0.20 3
6 2 43a 0.20 3
7 2 34a 0.83 1
8 3 23a 0.53 1
9 3 9a3 0.13 2
你回答了我的大部分问题。你从哪里学到了这么多关于熊猫的东西?我读文档很累,但从中理解起来真的很难。@JohnDoe-是的,我同意,第一次是不容易的。我真的很喜欢。嘿,你的答案不包括id2
任何地方。这是如何工作的?@JohnDoe-这是因为id2
每个组的点数相同。