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

如何用Python跨列查找含相同词汇的单元格并生成第三列

解决方案:跨列查找含相同词汇的单元格

不需要将DataFrame转换为numpy数组,用pandas自带的工具就能实现跨列匹配需求。以下是完整实现代码:

import pandas as pd
import numpy as np

# 定义提取词汇集合的函数:处理字符串拆分(含连字符),非字符串直接返回自身集合
def get_terms(s):
    if isinstance(s, str):
        # 先按路径分隔符拆分,再拆分连字符,提取所有词汇片段
        parts = s.split('/')
        terms = set()
        for part in parts:
            sub_parts = part.split('-')
            terms.update(sub_parts)
        return terms
    else:
        return {s}

# 示例数据
details = {
    'Column1': ['site.com/auto-new/car', 2, 30, 0],
    'Column2': ['site.com/auto/car', 1 , 25, 3]
}

df = pd.DataFrame(details)

# 预计算Column2所有值的词汇集合,避免重复计算提升效率
col2_terms = df['Column2'].apply(get_terms).to_dict()

# 定义匹配函数:对每个Column1的单元格,在Column2中找有共同词汇的项
def find_matching_values(row):
    terms_col1 = get_terms(row['Column1'])
    matches = []
    # 遍历Column2的所有值和对应的词汇集合
    for val_col2, terms_col2 in col2_terms.items():
        # 检查两个词汇集合是否有交集(即存在相同词汇)
        if not terms_col1.isdisjoint(terms_col2):
            matches.append(val_col2)
    # 返回匹配结果,无匹配则返回NaN
    return ', '.join(map(str, matches)) if matches else np.nan

# 生成NEW列
df['NEW'] = df.apply(find_matching_values, axis=1)

print(df)

代码说明:

  • get_terms函数:统一处理字符串和非字符串类型的数据,将内容转换为词汇集合,方便后续交集判断。对于路径类字符串,会拆分路径分隔符和连字符,提取所有独立词汇片段。
  • 预计算col2_terms:提前把Column2所有值的词汇集合存起来,避免在每行匹配时重复计算,提升运行效率。
  • find_matching_values函数:逐行处理Column1的内容,和Column2所有值的词汇集合做交集判断,收集所有匹配的Column2值,最后用逗号分隔返回,无匹配则返回NaN。

运行后输出结果:

Column1          Column2               NEW
0  site.com/auto-new/car  site.com/auto/car  site.com/auto/car
1                      2                  1                NaN
2                     30                 25                NaN
3                      0                  3                NaN

如果需要调整匹配规则(比如只匹配完全相同的词汇、或者只返回第一个匹配项),可以修改get_terms或find_matching_values函数的逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 20:30:44