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

如何用labels.csv的英文标签替换data.csv中的对应标签?

解决CSV标签匹配与替换问题

问题根源

你的代码无法正常执行是因为两个CSV的labels列格式不匹配:

  • data.csv的labels字段带双引号,且可能包含多个用逗号分隔的标签(比如"/m/09x0r,/t/dd00088")
  • labels.csv的labels是单个纯标签(比如/m/09x0r)
    这种情况下直接用pd.merge完全无法匹配,必须先统一格式再做映射。

解决方案步骤

1. 读取并预处理数据

先读取两个文件,同时把labels.csv转换成标签-英文释义的映射字典,这样查询效率最高。

2. 处理data.csv的标签列

编写一个自定义函数,完成以下操作:

  • 去掉标签字符串前后的双引号
  • 按逗号拆分多个标签
  • 用映射字典把每个标签替换成对应的英文释义
  • 将替换后的多个英文释义重新拼接成字符串

3. 生成结果并保存

将处理后的英文标签存入data.csv的新列,最后导出文件。

完整代码

import pandas as pd

# 读取两个CSV文件
df_data = pd.read_csv('data.csv')
df_labels = pd.read_csv('labels.csv')

# 构建标签到英文释义的映射字典,同时去掉labels_en的引号
label_map = df_labels.set_index('labels')['labels_en'].str.strip('"').to_dict()

# 定义标签转换函数
def convert_labels(label_str):
    # 去除前后双引号
    cleaned_labels = label_str.strip('"')
    # 拆分多个标签
    label_list = cleaned_labels.split(',')
    # 映射每个标签到英文,找不到的保留原标签(可根据需求调整)
    en_label_list = [label_map.get(label.strip(), label.strip()) for label in label_list]
    # 拼接成字符串
    return ', '.join(en_label_list)

# 生成新的labels_en列
df_data['labels_en'] = df_data['labels'].apply(convert_labels)

# 保存处理后的文件
df_data.to_csv('modified_data.csv', index=False)

说明

  • 如果data.csv的标签之间存在空格(比如"/m/09x0r , /t/dd00088"),代码里的label.strip()会自动去除每个标签的前后空格。
  • 如果遇到labels.csv中没有的标签,代码会保留原标签字符串,你可以根据需求修改(比如替换成"Unknown")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:55:39