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

如何使用pandas将DataFrame的多标签列拆分为多个独立列

Pandas标签列转布尔独热矩阵实现方法

直接使用pandas内置的字符串处理、独热编码方法即可完成转换,无需额外依赖,兼容性强:

import pandas as pd

# 读取CSV文件,pandas会自动识别双引号包裹字段内的逗号,无需额外解析参数
df = pd.read_csv("your_file_path.csv")

# 核心逻辑:处理标签列生成布尔矩阵
tag_matrix = (
    df["tags"]
    # 按逗号拆分标签字符串,兼容标签间空格数不固定的场景
    .str.split(",")
    # 将列表内的单个标签拆分为独立行,保留原数据的行索引
    .explode()
    # 清除标签前后多余空格
    .str.strip()
    # 移除标签前缀的#号
    .str.lstrip("#")
    # 生成标签独热编码
    .str.get_dummies()
    # 将0/1数值转换为布尔类型
    .astype(bool)
    # 按原行索引聚合,只要行内存在对应标签就标记为True
    .groupby(level=0).max()
)

# 拼接日期列与标签矩阵,得到最终结果
result = pd.concat([df["date"], tag_matrix], axis=1)

效果验证

传入你提供的示例数据运行后,输出结果和预期完全匹配:

date    foo   bar    baz
0 2021-09-08   True  True  False
1 2021-09-10  False  True  False
2 2021-09-15  False  True   True
3 2021-09-22  False  True  False

补充说明

  • 该写法不需要提前枚举所有标签值,后续数据新增标签时会自动生成对应列。
  • 如果需要0/1格式的数值标识,删除代码中.astype(bool)这一行即可。
  • 若原始数据中存在空标签值,可以在.str.strip()后增加.dropna()过滤空值,避免生成无意义的空名列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:48:22