python - 按密集排名对python pandas中的数据帧进行排名,并用连续数字替换列中的非连续数字
问题描述
我正在尝试按分数的升序对数据框进行排名,如果发现两个分数相同,则分配相同的排名。我目前正在使用以下方法,
df['IAbsRank'] = df['IAbs'].rank(ascending=0,method='dense')
给我整理排名的原始文件是通过一些python脚本运行的(这是在执行排名之后),由于这里不相关的原因,删除了很多行,导致 IAbs
列IRel
丢失他们有很多连续的(如果排名相同,则重复,即 1,2,2,3,4,5,5)数字。
我故意从原始数据框中省略了几列,这些列将显示在下面发布的列的左侧。
我要排名的重要列是IAbs
,IRel.
不确定是否相关,但每列大约有 3,000 行,我在此省略。
IAbs IAbsRank IRel IRelRank
69102933.3 1 30 10
43261866.7 3 6.1 56
36259200 6 1.8 317
35766400 7 1.9 286
34404266.7 8 7.6 47
29296000 11 2.6 178
仅供参考,在 python 脚本本身中,排名是在文件以最终 csv 格式保存之前完成的,即
df['IAbsRank'] = df['IAbs'].rank(ascending=0,method='dense')
df['IAbsRank'].to_csv(out_fn)
df['IRelRank'] = df['IRel'].rank(ascending=0,method='dense')
df.sort_values(by="IAbsRank", ascending=True, inplace=True)
df[df['Select'] == True].to_csv(out_fn, index=False, float_format="%.1f")
whereTrue
表示 python 脚本在所有行中查找的条件。如上所述,不满足此条件的行将被删除。
在 python 脚本中,我可以在哪里以及如何重新对列进行排序,以便更正已删除的行,所以我最终得到例如,排名列的结果显示的数量从顶部开始增加到底,没有数字被跳过?
解决方案
推荐阅读
- c# - 创建嵌套数组子对象索引
- python - 使用字典值列表计算列表交叉检查中最常见的项目
- ios - 将 swift 代码转换为 delphi - 对象的过程
- spring-boot - 使用规范和谓词从数据库中检索数据的条件查询
- javascript - 从集合 firebase angular/typescript 中获取所有文档
- javascript - 如何将动画 SVG 转换为 React 功能组件
- amazon-web-services - org.apache.hadoop.fs.FileAlreadyExistsException:无法为路径创建目录:“s3a//bucket1/folder1”,因为它是一个文件
- django - 如何更新 django 中的特定多线程字段
- json - 使用 VBA 输出数组以 excel
- python-3.x - 在 Prefect 中,是否可以在流程运行期间缓存任务值?