python - 如何在 Python Pandas 中按排名顺序转换点列值

标签 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 相同,则这些行的点也相同。

我想将这些积分转换为排名。不同的 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

关于python - 如何在 Python Pandas 中按排名顺序转换点列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54053344/

相关文章:

python - 隐藏 Unresolved 导入错误

python - 将 Pandas Dataframe 单元格中的嵌套数组值拆分为多行

python - Pandas DataFrame 似乎没有 "factorize"方法

python - "numpy concatenate"有什么问题?

python - gdaltools 将 geojson 点导出为多点

python - 我想将所有工作表添加到 Excel 中的一张工作表中

pandas - 将不同的 groupby 函数应用于数据框

python - 在 Django 中迁移时依赖项引用不存在的父节点错误

python - 如何在 pandas to_html 中创建合并行

python - HTML 表格到 Pandas 表格 : Info inside html tags