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

如何将Pandas DataFrame多值字符串列映射为ML可用编码格式?

解决方法

先优化你的唯一CPU提取逻辑

你原来的函数可以简化成更高效的版本,直接处理整个列的所有数据,避免嵌套循环:

import pandas as pd

def get_unique_cpus(df, col):
    # 分割字符串、去除首尾空格、展开所有CPU项后去重
    all_cpus = df[col].str.split(",").explode().str.strip()
    return all_cpus.unique().tolist()

supported_cpu_list = get_unique_cpus(df, 'supported_cpu')

方法1:手动生成独热编码列

适合快速生成每个CPU对应的0/1标记列,直观易懂:

# 遍历每个唯一CPU,为DataFrame添加对应的编码列
for cpu in supported_cpu_list:
    df[f"cpu_{cpu}"] = df['supported_cpu'].apply(
        lambda x: 1 if cpu in [item.strip() for item in x.split(",")] else 0
    )

每一行中,如果包含该CPU,对应列值为1,否则为0,直接可以作为ML模型的输入特征。

方法2:使用sklearn的MultiLabelBinarizer(推荐多标签场景)

如果你的任务是多标签分类(一行数据可能对应多个CPU标签),用这个工具更专业高效:

from sklearn.preprocessing import MultiLabelBinarizer

# 第一步:把原列转换为去除空格后的CPU列表
df['cpu_list'] = df['supported_cpu'].apply(lambda x: [item.strip() for item in x.split(",")])

# 第二步:初始化二值化器并生成编码
mlb = MultiLabelBinarizer(classes=supported_cpu_list)
cpu_encoded_matrix = mlb.fit_transform(df['cpu_list'])

# 第三步:把编码结果转为DataFrame并合并到原数据
cpu_encoded_df = pd.DataFrame(
    cpu_encoded_matrix, 
    columns=mlb.classes_, 
    index=df.index
)
df = pd.concat([df, cpu_encoded_df], axis=1)

# 可选:删除中间生成的cpu_list列
df = df.drop('cpu_list', axis=1)

生成的编码列同样是0/1格式,且专门适配多标签场景,后续可以直接传入ML模型。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:36:29