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

如何将Pandas数据框中的字符串类别列转换为整数编码列?

Pandas 字符串分类列转数值编码的简便方案

方法1:直接使用pd.factorize()(无固定排序要求时首选)

这是最轻量化的方案,不需要额外依赖,自动按照分类首次出现的顺序生成编码,无论分类数量多少都可以直接调用:

import pandas as pd

# 示例数据
df = pd.DataFrame({'brand': ['A', 'B', 'C', 'A', 'C', 'B']})

# 生成编码列
df['brand_code'] = pd.factorize(df['brand'])[0]

返回结果的第二个值为对应编码的原分类列表,可用于核对映射关系:pd.factorize(df['brand'])[1] 会输出['A', 'B', 'C']。

方法2:自定义排序映射(需要固定编码顺序时使用)

如果要求固定分类对应编码(比如必须A=0、B=1、C=2,和出现顺序无关),可以先生成排序后的映射字典再调用map:

# 按字母顺序生成映射字典,也可以自定义排序规则替换sorted逻辑
unique_brands = sorted(df['brand'].unique())
brand_map = {val: idx for idx, val in enumerate(unique_brands)}

df['brand_code'] = df['brand'].map(brand_map)

生成的映射字典可以保存下来,后续处理新数据时直接复用,保证编码规则一致。

方法3:适配机器学习流程的LabelEncoder

如果后续需要把编码反向转回原字符串、或者和sklearn建模流程打通,可以使用LabelEncoder:

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()
df['brand_code'] = le.fit_transform(df['brand'])

# 反向转回原字符串示例
# original_brand = le.inverse_transform(df['brand_code'])

以上三种方案都支持任意数量的分类值,不需要手动逐个编写映射规则,5种以上分类的场景也可以直接使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 13:36:07