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

如何在Python中对Dataframe列的逗号分隔文本进行标签编码?

实现多值类别列的二值化编码方案

你需要的是多标签二值化(注意:这不是普通的标签编码,普通标签编码会把类别映射为单一整数,不适合多值共存的场景),以下提供两种简便的实现方法:

方法一:使用Pandas原生函数

先构建与你数据一致的示例DataFrame:

import pandas as pd

df = pd.DataFrame({
    '形状': ['Circle', 'Square', 'Triangle', 'Rectangle'],
    '重量': [5, 7, 8, 10],
    'Colour': ['Blue, Red', 'Yellow, Red', 'Blue, Yellow, Red', 'Green']
})

通过字符串拆分+独热编码生成目标格式:

# 将Colour列的多值转为|分隔格式,再生成二值化列
colour_dummies = df['Colour'].str.split(', ').str.join('|').str.get_dummies()
# 合并原数据与编码列,删除原Colour列
final_df = pd.concat([df.drop('Colour', axis=1), colour_dummies], axis=1)

方法二:使用Scikit-learn的MultiLabelBinarizer

适合更复杂的多标签场景,支持自定义标签集合:

import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer

df = pd.DataFrame({
    '形状': ['Circle', 'Square', 'Triangle', 'Rectangle'],
    '重量': [5, 7, 8, 10],
    'Colour': ['Blue, Red', 'Yellow, Red', 'Blue, Yellow, Red', 'Green']
})

# 初始化多标签二值化器
mlb = MultiLabelBinarizer()
# 将Colour列拆分为嵌套列表格式
colour_list = df['Colour'].str.split(', ').tolist()
# 执行编码并转为DataFrame
colour_encoded = pd.DataFrame(mlb.fit_transform(colour_list), columns=mlb.classes_)
# 合并数据得到结果
final_df = pd.concat([df.drop('Colour', axis=1), colour_encoded], axis=1)

运行上述代码后,即可得到你需要的DataFrame格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 10:50:24