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

Pandas逐行对比两列数据 移除initial_data匹配词生成新列

实现方案

核心逻辑:匹配阶段忽略词汇大小写,保留原始词汇的大小写、语序与格式,仅删除匹配成功的词汇,自动处理词汇附带的标点符号。

import pandas as pd
import string

# 构造示例DataFrame
df = [['HJC, casco helmets integral de moto', 'HJC Helmets'], ['Silverstone Technology  Concentrador de Datos ', 'SilverStone Technology'], ['Urban Leather UR-52 Chaqueta de Cuero', 'URBAN 5884']]
df = pd.DataFrame(df, columns = ['initial_data', 'additional_data'])

def filter_match(row):
    # 将additional_data词汇转小写生成匹配集合,忽略大小写差异
    add_words = set(word.lower() for word in row['additional_data'].split())
    initial_tokens = row['initial_data'].split()
    res_tokens = []
    for token in initial_tokens:
        # 去除token首尾标点后转小写用于匹配,不修改原始token格式
        clean_token = token.strip(string.punctuation).lower()
        if clean_token not in add_words:
            res_tokens.append(token)
    # 拼接结果并清理首尾多余空格
    return ' '.join(res_tokens).strip()

# 逐行应用函数生成新列
df['new_data'] = df.apply(filter_match, axis=1)

输出验证

print(df['new_data'])
0                casco integral de moto
1                Concentrador de Datos
2    Leather UR-52 Chaqueta de Cuero
Name: new_data, dtype: object

完全符合预期输出要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:24:03