如何检查Original Fault列任意DI编码是否存在于Current Fault列字符串中
故障DI编码匹配校验实现方案
核心需求:逐行拆分「Original Fault」列中所有符合DI+4位数字规则的独立编码,校验是否至少有1个编码存在于对应行的「Current Fault」列内容中,匹配成功返回yes。
方案1:Excel/WPS 表格实现(无代码场景)
假设「Original Fault」列为A列、「Current Fault」列为B列,表头在第1行,数据从第2行开始,在新增列的第2行输入以下公式,下拉填充即可:=IF(SUMPRODUCT(--ISNUMBER(SEARCH(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A2," ",""),",","</s><s>")&"</s></t>","//s"),B2)))>0,"yes","no")
逻辑说明:
- 先替换单元格内的空格、逗号等常见分隔符,拆分出所有独立编码
- 逐个检索编码是否存在于「Current Fault」单元格内容中
- 只要命中1个匹配项就返回
yes,否则返回no
方案2:Python Pandas 实现(批量处理大量数据场景)
通过正则提取严格符合规则的编码,不受分隔符类型限制,容错率更高:
import pandas as pd import re def di_match_check(row): # 提取Original Fault列所有符合DI+4位数字规则的编码 original_codes = re.findall(r'DI\d{4}', str(row['Original Fault'])) current_content = str(row['Current Fault']) # 遍历校验匹配 for code in original_codes: if code in current_content: return 'yes' return 'no' # 生成匹配结果列 df['match_result'] = df.apply(di_match_check, axis=1)
适配调整说明
- 若编码存在其他分隔符(分号、换行符等),Excel方案可在SUBSTITUTE函数中新增对应替换规则即可;Python方案无需调整,正则会自动跳过分隔符提取符合规则的编码
- 若需要大小写严格匹配,Excel方案中将
SEARCH函数替换为FIND,Python方案中调整匹配逻辑为大小写敏感判断即可
内容的提问来源于stack exchange,提问作者Lobo1908
相关产品推荐
相关产品推荐

