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

OpenRefine GREL移除另一列中存在词汇的实现问题求助

解决方案

一、Excel公式直接处理

假设药品名称在A列,要删除的词汇在D列(对应截图里的delete列),用下面的数组公式(输入后按Ctrl+Shift+Enter确认):
=TEXTJOIN(" ",TRUE,IF(ISNUMBER(SEARCH(D$2:D$100,A2)),"",TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",99)),(ROW($1:$100)-1)*99+1,99))))
这个公式会把药品名按空格拆分,自动过滤掉在delete列里的词汇,最后再拼成完整名称。如果需要精确整词匹配(避免误删包含目标词的其他词汇),换这个公式:
=TEXTJOIN(" ",TRUE,IF(ISNA(MATCH(TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",99)),(ROW($1:$100)-1)*99+1,99)),D$2:D$100,0)),TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",99)),(ROW($1:$100)-1)*99+1,99)),""))

二、Power Query批量处理(适合大量数据)

  1. 选中数据区域,点「数据」选项卡→「从表格/区域」导入Power Query
  2. 先把delete列转成列表:在Power Query编辑器里,新建自定义项,输入DeleteList = List.Buffer(Excel.CurrentWorkbook(){[Name="DeleteTable"]}[Content][delete])(把DeleteTable换成你delete列所在的表格名)
  3. 给药品名称列添加自定义列,公式写:
    = Text.Combine(List.RemoveItems(Text.Split([药品名称], " "), DeleteList), " ")
  4. 点「关闭并上载」,处理后的结果就会回到Excel里。

三、Python脚本处理(超大规模数据首选)

如果数据量特别大,Excel运行卡顿,用Python更高效,代码示例:

import pandas as pd

# 读取你的Excel文件
df = pd.read_excel("你的文件路径.xlsx")
# 提取要删除的词汇列表,去掉空值
delete_words = df["delete"].dropna().tolist()

# 定义处理函数
def clean_drug_name(text):
    # 拆分词汇,过滤掉要删除的,再拼接回去
    words = str(text).split()
    filtered = [word for word in words if word not in delete_words]
    return " ".join(filtered)

# 批量处理药品名称列
df["处理后名称"] = df["药品名称"].apply(clean_drug_name)

# 保存处理后的文件
df.to_excel("处理完成的药品列表.xlsx", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:42:17