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

如何用Pandas按分隔符拆分列并转换为独热编码格式

没问题!你要实现的是把多值列转换成独热编码格式,用Pandas就能轻松搞定,我给你两种实用的方法:

方法一:用Pandas内置的str.get_dummies(最简单直接)

这个方法专门处理这类分隔符分隔的文本列,一步生成独热编码:

首先先构造你的原始DataFrame:

import pandas as pd

df = pd.DataFrame({
    'Item': ['ID-1', 'ID-2', 'ID-3', 'ID-4', 'ID-5'],
    'Colors': ['Red, Blue, Green', 'Red, Blue', 'Blue, Green', 'Blue', 'Red']
})

然后执行以下代码:

# 按", "拆分Colors列并生成独热编码
color_onehot = df['Colors'].str.get_dummies(', ')
# 把Item列和独热编码结果合并
final_df = pd.concat([df['Item'], color_onehot], axis=1)
# 调整列顺序为你想要的Red、Blue、Green
final_df = final_df.reindex(columns=['Item', 'Red', 'Blue', 'Green'])

运行后你就能得到完全符合需求的结果:

Item  Red  Blue  Green
0  ID-1    1     1      1
1  ID-2    1     1      0
2  ID-3    0     1      1
3  ID-4    0     1      0
4  ID-5    1     0      0

方法二:用MultiLabelBinarizer(适合更复杂的多标签场景)

如果你的Colors列后续可能出现更多新颜色,这个方法会自动识别所有类别,扩展性更强:

import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer

# 构造原始DataFrame
df = pd.DataFrame({
    'Item': ['ID-1', 'ID-2', 'ID-3', 'ID-4', 'ID-5'],
    'Colors': ['Red, Blue, Green', 'Red, Blue', 'Blue, Green', 'Blue', 'Red']
})

# 把Colors列转换成列表格式(每个元素是颜色列表)
color_lists = df['Colors'].str.split(', ')
# 初始化多标签二值化器
mlb = MultiLabelBinarizer()
# 生成独热编码数组
onehot_array = mlb.fit_transform(color_lists)
# 转换成DataFrame并指定列名
color_df = pd.DataFrame(onehot_array, columns=mlb.classes_)
# 合并并调整列顺序
final_df = pd.concat([df['Item'], color_df], axis=1).reindex(columns=['Item', 'Red', 'Blue', 'Green'])

这个方法的好处是,哪怕之后Colors里出现了比如Yellow,它也会自动新增Yellow列,不用手动修改代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:14:25