[英]How do I convert points column values in rank order in Python Pandas
我有一個這樣的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 0.83
3 23a 0.53
3 9a3 0.13
好的,這就是問題。 如果id1
和id2
在多行中相同,則這些行中的points
也相同。
我想將這些點轉換為等級。 對於不同的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
讓我知道,如果我不明白
使用GroupBy.rank
與參數dense
和ascending=False
:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.