You need to enable JavaScript to run this app. 如何将pandas rank生成的字典中非整数四舍五入为唯一整数
优惠活动
大模型
产品
解决方案
定价
更多

如何将pandas rank生成的字典中非整数四舍五入为唯一整数

方案1:从源头避免非整数排名(推荐)

你调用pandas的rank方法时,直接指定method='first'参数,遇到并列值时会按数据出现的先后顺序直接分配唯一整数排名,不会生成带.5的浮点值,不需要后续二次处理。
示例调用写法:

# 假设df['col']是你要排名的列
df['rank'] = df['col'].rank(method='first')
# 转字典直接就是整数结果
rank_dict = df['rank'].to_dict()

方案2:已有浮点排名字典的处理方式

如果你已经生成了浮点排名的字典,可以通过排序后重新分配连续整数的方式实现需求,该方式可以保证排名相对顺序不变,且不会出现重复值,同值条目的排名先后可以通过调整排序规则自由控制。

示例代码

# 你的原始浮点排名字典
rank_dict = {
    'EHS': 11.0,
    'Engineering': 4.5,
    'GPS': 9.5,
    'Logistics': 3.0,
    'NPI & Technical': 7.0,
    'OSD': 8.0,
    'Quality': 1.5,
    'RSC & Micronising': 1.5,
    'Strategy': 4.5,
    'Tech': 6.0,
    'Unknown Function': 9.5
}

# 按原始排名值升序排序,同值条目默认按键名升序排序,可修改key调整同值先后顺序
sorted_items = sorted(rank_dict.items(), key=lambda x: (x[1], x[0]))
# 按排序后的顺序分配唯一连续整数排名
new_rank_dict = {k: idx + 1 for idx, (k, v) in enumerate(sorted_items)}

输出结果示例

{
    'Quality': 1,
    'RSC & Micronising': 2,
    'Logistics': 3,
    'Engineering': 4,
    'Strategy': 5,
    'Tech': 6,
    'NPI & Technical': 7,
    'OSD': 8,
    'GPS': 9,
    'Unknown Function': 10,
    'EHS': 11
}

如果你要调整同值条目的整数分配顺序,比如让Strategy排4、Engineering排5,只需要修改排序的key即可,示例:

# 同值条目按键名倒序排序
sorted_items = sorted(rank_dict.items(), key=lambda x: (x[1], x[0]), reverse=True)

内容的提问来源于stack exchange,提问作者Abijah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 07:21:03