繁体   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