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

如何在Pandas中根据另一列的标签创建独热编码新列?

问题描述

我有一个包含两列的DataFrame,代码如下:

import pandas as pd
pd.DataFrame({"action":['asdasd','fgdgddg','dfgdgdfg','dfgdgdfg','nmwaws'],"classification":['positive','negative','neutral','positive','mixed']})

对应的DataFrame结构为:

action    classification
asdasd        positive
fgdgddg       negative
dfgdgdfg      neutral
dfgdgdfg      positive
nmwaws        mixed

我希望针对classification列中的每个唯一标签创建4个新列,若对应行包含该标签则赋值1,否则赋值0,期望输出如下:

action    classification    positive   negative   neutral  mixed
asdasd        positive         1          0          0       0
fgdgddg       negative         0          1          0       0
dfgdgdfg      neutral          0          0          1       0
dfgdgdfg      positive         1          0          0       0
nmwaws        mixed            0          0          0       1

尝试使用sklearn的MultiLabelBinarizer时,它解析的是每个单词的字母而非单词本身,寻求解决方案。

解决方案

方法1:使用pandas内置的get_dummies(推荐)

这是最直接的实现方式,pandas的get_dummies可一键生成符合需求的独热编码列:

import pandas as pd

# 初始化原始DataFrame
df = pd.DataFrame({
    "action": ['asdasd','fgdgddg','dfgdgdfg','dfgdgdfg','nmwaws'],
    "classification": ['positive','negative','neutral','positive','mixed']
})

# 生成独热编码列并与原DataFrame合并
result = pd.concat([df, pd.get_dummies(df['classification'])], axis=1)
print(result)

运行后会自动识别classification列的所有唯一标签,生成对应列并填充0/1,直接得到期望输出。

方法2:正确使用MultiLabelBinarizer

你之前的问题源于MultiLabelBinarizer默认处理可迭代的标签集合而非单个字符串,只需将classification列的每个元素转为单元素列表即可解决:

import pandas as pd
from sklearn.preprocessing import MultiLabelBinarizer

df = pd.DataFrame({
    "action": ['asdasd','fgdgddg','dfgdgdfg','dfgdgdfg','nmwaws'],
    "classification": ['positive','negative','neutral','positive','mixed']
})

# 转换列格式为单元素列表,适配MultiLabelBinarizer要求
mlb = MultiLabelBinarizer()
one_hot = mlb.fit_transform(df['classification'].apply(lambda x: [x]))

# 将独热编码转为DataFrame并合并到原数据
one_hot_df = pd.DataFrame(one_hot, columns=mlb.classes_)
result = pd.concat([df, one_hot_df], axis=1)
print(result)

此方式可正确识别整个单词作为标签,避免拆分字母的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 20:06:33