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

如何从DataFrame与标签列表生成分组二进制标签?

基于Pandas生成分组的二进制标签列表

已知条件

  • 标签列表:
labs = ['G1','G2','G3','G4','G5','G6','G7']
  • 去重后的目标数据集:
group entity_label
0      0           G1
1      0           G2
3      1           G5
4      1           G1
5      2           G1
6      2           G2
7      2           G3

(可通过原df_test执行drop_duplicates(subset=['group','entity_label'], keep='first')得到)

需求

为每个group生成对应labs的二进制标签列表:列表中每个位置对应labs的标签,若该组包含此标签则标记为1,否则为0,最终得到如下结果:

group    entity_label_binary
0      0  [1, 1, 0, 0, 0, 0, 0]
1      1  [1, 0, 0, 0, 1, 0, 0]
2      2  [1, 1, 1, 0, 0, 0, 0]

实现方案

方案一:分组聚合+列表推导

通过分组聚合获取每个组的标签集合,再遍历labs生成二进制列表:

import pandas as pd

labs = ['G1','G2','G3','G4','G5','G6','G7']
df_test = pd.DataFrame({'group': [0,0,0,1,1,2,2,2,2],
                       'entity_label':['G1','G2','G2','G5','G1','G1','G2','G3','G3']})

# 1. 数据去重
df_unique = df_test.drop_duplicates(subset=['group','entity_label'], keep='first')

# 2. 分组聚合每个组的标签为集合
grouped_tags = df_unique.groupby('group')['entity_label'].agg(set).reset_index()

# 3. 生成二进制标签列表
grouped_tags['entity_label_binary'] = grouped_tags['entity_label'].apply(
    lambda tag_set: [1 if lab in tag_set else 0 for lab in labs]
)

# 4. 整理结果
result = grouped_tags.drop('entity_label', axis=1)
print(result)

方案二:交叉表法

利用pd.crosstab生成交叉统计表格,再转换为二进制列表,代码更简洁:

import pandas as pd

labs = ['G1','G2','G3','G4','G5','G6','G7']
df_test = pd.DataFrame({'group': [0,0,0,1,1,2,2,2,2],
                       'entity_label':['G1','G2','G2','G5','G1','G1','G2','G3','G3']})

# 1. 数据去重
df_unique = df_test.drop_duplicates(subset=['group','entity_label'], keep='first')

# 2. 生成交叉表,统计每组各标签的存在情况
cross_table = pd.crosstab(df_unique['group'], df_unique['entity_label'])
# 按labs的顺序调整列顺序,确保二进制列表对应正确
cross_table = cross_table[labs]

# 3. 将每行转换为二进制列表
cross_table['entity_label_binary'] = cross_table.apply(list, axis=1)

# 4. 整理结果
result = cross_table.reset_index()[['group', 'entity_label_binary']]
print(result)

两种方案运行后都会输出目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:41:13