You need to enable JavaScript to run this app. 如何将多组类别集合转换为标记形式的DataFrame?
优惠活动
大模型
产品
解决方案
定价
更多

如何将多组类别集合转换为标记形式的DataFrame?

集合序列转二值标记结构化DataFrame实现

核心需求说明

将由多组类别构成的集合序列,转换为以全量出现类别为列的结构化DataFrame,每行通过1/0标记所属集合是否包含对应类别元素。

常用实现方案

方案1:Pandas内置方法快速实现

适合常规批量处理场景,代码简洁无需手写循环逻辑,借助pandas内置的展开、one-hot编码能力直接生成结果:

import pandas as pd

# 待转换输入示例
A = [{'a', 'c'}, {'a', 'b'}, {'b', 'd'}, {'e'}]

# 链式操作生成二值标记DataFrame
result = pd.Series(A).explode().str.get_dummies().groupby(level=0).max()

# 可选:调整行索引从1开始,匹配示例输出格式
result.index = result.index + 1

方案2:逐行判断的手动实现

灵活性更高,方便后续嵌入自定义判断规则,逻辑直观易维护:

import pandas as pd

# 待转换输入示例
A = [{'a', 'c'}, {'a', 'b'}, {'b', 'd'}, {'e'}]

# 提取全量不重复类别作为DataFrame列名
all_categories = sorted({cat for single_set in A for cat in single_set})

# 逐行生成二值标记矩阵
binary_matrix = [
    [1 if cat in single_set else 0 for cat in all_categories]
    for single_set in A
]

# 生成结构化DataFrame,设置行索引从1开始
result = pd.DataFrame(binary_matrix, columns=all_categories, index=range(1, len(A)+1))

最终输出效果

两种方案生成的结果完全一致,匹配参考示例要求:

a  b  c  d  e
1  1  0  1  0  0
2  1  1  0  0  0
3  0  1  0  1  0
4  0  0  0  0  1

内容的提问来源于stack exchange,提问作者Matheus Cândido

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 20:57:02