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

如何将分箱特征转换为数值型分类特征?求最简实现方法

将分箱型分类特征转为数值型分类特征的最简方法

使用pandas.cut()把数值特征转成分箱分类特征十分简单,但反过来,把类似["0-9%", "10-19%", "20-29%", "30-39%", ...]这样的分箱类别转为1、2、3……的数值型特征,有没有比循环或字典映射更简洁的解决方案?

方法1:利用pandas分类编码功能

这是最简洁的原生解法,直接将列转为分类类型后提取编码,再调整偏移量(默认编码从0开始,加1后得到从1起始的数值标签):

import pandas as pd

# 假设数据为Series格式
bin_series = pd.Series(["0-9%", "10-19%", "20-29%", "0-9%", "30-39%"])
numeric_labels = bin_series.astype('category').cat.codes + 1

说明:astype('category')会自动按分箱的自然顺序排序(若分箱是规则生成的,顺序会保持正确),cat.codes生成0起始的编码,加1后正好得到1、2、3...的目标数值。

方法2:提取分箱起始数字计算

如果分箱格式固定(均为"XX-XX%"形式),可以直接提取起始数字生成标签,无需依赖分类顺序:

# 提取分箱开头的数字,转为整数后除以10再加1
numeric_labels = bin_series.str.extract(r'^(\d+)').astype(int) // 10 + 1

说明:正则表达式^(\d+)匹配分箱开头的数字,例如"0-9%"提取0、"10-19%"提取10,除以10后得到0、1、2...,加1后对应1、2、3...的标签,逻辑直观且不会因分类顺序出错。

优势对比

  • 方法1一行代码完成,完全复用pandas内置能力,无需手动构建映射字典或编写循环,代码极简。
  • 方法2适配固定格式的分箱场景,逻辑清晰,避免分类顺序可能带来的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:40:31