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

如何将Pandas DataFrame列标题转换为多标签分类训练的文本标签?

嘿,这事儿好办!我帮你写个Pandas的处理脚本,完美实现你要的多标签分类数据格式转换。先理清楚逻辑,再上代码和示例:

核心思路

我们要逐行检查A到E这些标签列,把值为1或2(不管是数值型还是字符串型)的列标题收集起来,作为对应Content文本的标签列表,最后生成只保留Content和Labels的目标DataFrame。

完整代码示例

先拿一个模拟的输入DataFrame来演示,你可以直接替换成自己的真实数据:

import pandas as pd

# 模拟输入数据(替换成你的真实DataFrame即可)
df_input = pd.DataFrame({
    'Content': ['周末去爬山', '在家看电影', '健身房撸铁'],
    'A': ['1', '', 2],
    'B': ['2', 1, ''],
    'C': ['', '', ''],
    'D': [1, '', '2'],
    'E': ['', 2, 1]
})

# 定义函数:提取当前行的有效标签
def extract_labels(row):
    valid_labels = []
    # 遍历所有标签列(排除Content列)
    for label_col in df_input.columns.drop('Content'):
        cell_value = row[label_col]
        # 处理空值和类型问题,判断是否为有效标签值
        if str(cell_value).strip() in ['1', '2']:
            valid_labels.append(label_col)
    return valid_labels

# 生成Labels列
df_output = df_input.copy()
df_output['Labels'] = df_output.apply(extract_labels, axis=1)

# 只保留需要的Content和Labels列
df_output = df_output[['Content', 'Labels']]

# 查看结果
print(df_output)

运行结果

运行上面的代码后,你会得到这样的目标DataFrame:

Content       Labels
0  周末去爬山  [A, B, D]
1  在家看电影     [B, E]
2  健身房撸铁  [A, D, E]

关键细节说明

  1. 兼容多种数据类型:用str(cell_value).strip()把单元格值转成字符串并去除空格,不管是数值1/2还是字符串'1'/'2',甚至带空格的' 2 '都能被正确识别。
  2. 通用化标签列处理:用df_input.columns.drop('Content')获取所有标签列,哪怕你的标签列不是A-E而是其他名字,这段代码也能正常工作。
  3. 空标签处理:如果某一行所有标签列都不符合条件,Labels会是空列表[],保证和Content的长度完全一致,不会影响后续分类器训练。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:27:46