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

pandas中如何最优拆分多值列生成0/1标记的独热编码列

最优实现方案

不要用逐行apply写重复逻辑,pandas原生提供了向量化的字符串拆分哑变量方法,性能远高于自定义循环,代码也最简洁。

核心是用Series.str.get_dummies方法,直接按分隔符拆分字符串生成0-1特征列:

# 按'-'拆分coverage列,自动生成所有保障类型对应的0-1列
coverage_dummies = df['coverage'].str.get_dummies(sep='-')
# 将生成的特征列拼接到原DataFrame
df = pd.concat([df, coverage_dummies], axis=1)

这个方案的优势:

  • 性能极强:底层是C层实现的向量化运算,比逐行apply的Python循环快数十到上百倍,数据量越大优势越明显
  • 零重复代码:不需要逐列编写判断逻辑,会自动识别所有出现过的保障类型生成对应列,后续新增保障类型取值也不需要修改代码
  • 逻辑准确:只要字符串中包含对应保障类型片段,对应列就会赋值为1,否则为0,完全匹配需求

如果你只需要固定生成DAMAGE、THEFT、WARRANTY_EXTENSION、FRAUDULENT_USE这4列,不需要其他自动识别出的列,可以在生成哑变量后做列筛选:

target_columns = ['DAMAGE', 'THEFT', 'WARRANTY_EXTENSION', 'FRAUDULENT_USE']
coverage_dummies = df['coverage'].str.get_dummies(sep='-')[target_columns]
df = pd.concat([df, coverage_dummies], axis=1)

注意:如果后续你的保障类型取值中出现本身包含-的类型名,才需要额外调整拆分逻辑,基于你当前给出的取值范围,上述方案是兼顾效率和代码简洁度的最优解。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.20 16:15:50