如何检测两列数据是否包含部分相似字符串并生成结果列
两列字符串部分匹配判断及结果列生成方案
数据示例
| Location | Name | Result |
|---|---|---|
| Sherman Oaks | Oaks | 1 |
| Beverly drive | Sherman way | 0 |
| Hollywood Blvd | Hollywood | 1 |
| 3rd Street | Main | 0 |
| Ventura | Park Ave | 0 |
| Palm Springs | 空值 | 0 |
方案1:Excel公式实现
在Result列第一行(假设数据从第2行开始)输入以下公式,下拉填充即可完成批量判断:
=IF(OR(ISBLANK(A2),ISBLANK(B2)),0,IF(OR(ISNUMBER(SEARCH(TRIM(B2),TRIM(A2))),ISNUMBER(SEARCH(TRIM(A2),TRIM(B2)))),1,0))
TRIM:去除字符串首尾空格,避免空格干扰匹配判断SEARCH:检测一个字符串是否包含另一个,不区分大小写ISNUMBER:判断SEARCH是否找到匹配结果(找到返回数字,否则返回错误值)ISBLANK:处理任意一列为空值的情况,直接返回0
方案2:Python Pandas实现
适合大数据量的批量处理场景,代码逻辑如下:
import pandas as pd # 构造示例数据 data = { 'Location': ['Sherman Oaks', 'Beverly drive', 'Hollywood Blvd', '3rd Street', 'Ventura', 'Palm Springs'], 'Name': ['Oaks', 'Sherman way', 'Hollywood', 'Main', 'Park Ave', pd.NA] } df = pd.DataFrame(data) # 定义匹配判断函数 def check_partial_match(row): loc = str(row['Location']).strip() name = str(row['Name']).strip() # 处理空值/NaN情况 if pd.isna(row['Name']) or name == 'NaN' or name == '': return 0 # 判断双向包含关系 return 1 if (name in loc) or (loc in name) else 0 # 生成Result列 df['Result'] = df.apply(check_partial_match, axis=1) print(df)
执行后会直接生成包含Result列的DataFrame,自动处理空值和部分匹配逻辑。
内容的提问来源于stack exchange,提问作者Lital
相关产品推荐
相关产品推荐

