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

如何将数据框行标签转为列并聚合以适配多标签分类?

解决多标签分类数据格式转换的方法

这里给你两个简单可行的方案,都是基于Pandas的常规操作:

方案一:get_dummies + groupby聚合

先把Label列转成独热编码,再按Key、Name、Description分组取最大值(同一组内只要出现过该标签就保留1,没出现就是0):

import pandas as pd

# 构造示例数据(对应你提供的原始DataFrame)
df = pd.DataFrame({
    'Key': [1,1,2,3],
    'Name': ['Self service', 'Self service', 'Multi cloud', 'Storage issues'],
    'Description': ['We want self service.', 'We want self service.', 'Mutli cloud is needed.', 'Storage upgrade.'],
    'Label': ['Performance', 'Storage', 'Scaling', 'Storage']
})

# 生成标签列的独热编码
dummies = pd.get_dummies(df['Label'])
# 合并原数据与独热编码列
df_combined = pd.concat([df, dummies], axis=1)
# 分组聚合,取最大值确保同一Key组内标签值为1或0
result = df_combined.groupby(['Key', 'Name', 'Description']).max().reset_index()

print(result)

方案二:pivot_table直接转换

用透视表功能,指定分组索引和标签列,填充空值为0后整理格式:

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'Key': [1,1,2,3],
    'Name': ['Self service', 'Self service', 'Multi cloud', 'Storage issues'],
    'Description': ['We want self service.', 'We want self service.', 'Mutli cloud is needed.', 'Storage upgrade.'],
    'Label': ['Performance', 'Storage', 'Scaling', 'Storage']
})

# 生成透视表,aggfunc用count或max均可,fill_value填充空值为0
result = df.pivot_table(
    index=['Key', 'Name', 'Description'],
    columns='Label',
    values='Label',
    aggfunc='count',
    fill_value=0
).reset_index()

# 移除列名的层级标签,匹配目标格式
result.columns.name = None

print(result)

两种方法都能得到你需要的格式,核心是确保同一Key对应的Name、Description是唯一值,这样分组或透视后不会出现重复行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 10:03:25