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

