You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将pandas列数值按大小顺序映射为1-50范围且保留重复值

pandas 整数列按大小映射为连续序号方案

需求为将列的唯一值按从小到大排序,分别映射为1、2、...、N(N为唯一值总数),重复值保留相同映射值,可通过以下两种方法实现:


方案1:使用rank函数(最简洁)

pandas内置的rank方法配合dense排序模式,刚好可以实现连续不跳号的排名,完全符合需求,代码如下:

geodf['Areas'] = geodf['Areas'].rank(method='dense').astype(int)

参数说明:

  • method='dense':重复值排名相同,后续排名不会跳号,比如三个相同值排第1,下一个不同值直接排第2
  • astype(int):rank默认返回浮点数,转成整数符合输出要求
    运行上述代码后,输出结果和你给出的示例完全一致。

方案2:自定义映射字典(灵活度更高)

如果后续需要调整映射规则,你可以先对唯一值排序生成映射关系,再替换列值:

# 提取列的唯一值并升序排序
sorted_unique = sorted(geodf['Areas'].unique())
# 生成「原始值-目标序号」的映射字典
value_map = {val: idx + 1 for idx, val in enumerate(sorted_unique)}
# 替换列值
geodf['Areas'] = geodf['Areas'].map(value_map)

两种方案性能都可以满足200+行甚至更大规模数据的处理需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:09:03