簡體   English   中英

如何在Python Pandas中按排名順序轉換點列值

[英]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

好的,這就是問題。 如果id1id2在多行中相同,則這些行中的points也相同。

我想將這些點轉換為等級。 對於不同的id1不同。 如果兩個人具有相同的id1id2 ,則排名也將相同

預期產量:

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與參數denseascending=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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM