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

如何用Pandas将含逗号分隔字符串的列转换为二进制特征列

解决方法

1. 先读入Excel文件

import pandas as pd

# 读取目标Excel文件
df = pd.read_excel("Data.xlsx")
# 单独提取Operations列
ops_series = df["Operations"]

2. 正确拆分字符串

你的核心问题是要保留带空格的完整操作项——别用普通空格拆分,直接按", "(逗号加空格)作为分隔符切分即可:

# 按", "拆分每行内容,得到每行的操作列表
split_ops = ops_series.str.split(", ")

如果遇到少数只有逗号、没有空格的特殊分隔情况,改用正则匹配任意逗号加空白字符:split_ops = ops_series.str.split(r",\s*")

3. 提取所有唯一操作项

把拆分后的所有操作列表展平,去重得到需要编码的所有唯一值:

# 展平所有操作列表,提取唯一操作项
unique_operations = pd.unique(split_ops.explode())

4. 生成二进制编码列

遍历每个唯一操作项,给每行标记1(该操作存在)或0(该操作不存在):

# 为每个操作项生成对应的二进制列
for op in unique_operations:
    df[op] = split_ops.apply(lambda x: 1 if op in x else 0)

完整代码示例

import pandas as pd

# 读取Excel文件
df = pd.read_excel("Data.xlsx")

# 拆分Operations列
split_ops = df["Operations"].str.split(", ")

# 获取所有唯一操作项
unique_ops = pd.unique(split_ops.explode())

# 生成二进制编码列
for op in unique_ops:
    df[op] = split_ops.apply(lambda x: 1 if op in x else 0)

# 查看处理后的结果
print(df.head())

补充说明

  • 如果同一行存在重复的操作项(比如"stringA, stringA"),代码会自动标记为1,不会重复计数
  • 要是你的分隔规则还有其他特殊场景,可以调整split的参数,比如用正则匹配更复杂的分隔模式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:43:23