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

如何为DataFrame指定列的取值范围分配有序序号

Pandas DataFrame 按列值映射连续序号解决方案

场景说明

现有DataFrame某列取值为139~150的整数,存在重复值,需要将列值映射为有序序号,规则为139→0、140→1...,如果需要150对应10调整减数即可。

方案1:直接数值计算(推荐,适合当前连续值场景)

直接用列值减去起始值139即可得到对应序号,性能最优:

import pandas as pd

# df为你的DataFrame,col为待映射的列名,new_col为生成的序号列名
df['new_col'] = df['col'] - 139

如果需要150对应10,将上方的139替换为140即可。

方案2:通用场景(非连续值也可使用)

如果列值不连续,只需要按从小到大的顺序分配唯一序号,可以用pd.factorize实现:

# 按列值升序分配序号,相同值序号一致
df['new_col'] = pd.factorize(df['col'].sort_values())[0]

效果验证

用测试数据运行效果如下:

# 构造测试数据
df = pd.DataFrame({'col': [139,140,139,145,150,142]})
df['new_col'] = df['col'] - 139
print(df)

输出结果:

col  new_col
0  139        0
1  140        1
2  139        0
3  145        6
4  150       11
5  142        3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:09:05