如何筛选缩写作为独立词存在于公司名称的DataFrame行
解决方案:匹配独立单词形式的缩写
你的问题出在contains是子串匹配,会把单词内部的子串也匹配到(比如"ALCON"里的"co")。要确保缩写是作为独立单词存在于公司名称中,需要用正则表达式匹配单词边界。
代码实现
使用Spark的rlike函数结合正则表达式,匹配缩写前后为非单词字符或字符串首尾:
from pyspark.sql.functions import col, concat # 过滤出abbr作为独立单词存在的行 df.filter(col('name').rlike(concat("(^|\\W)", col("abbr"), "(\\W|$)"))).display()
正则说明
(^|\\W):匹配字符串开头,或空格、标点等非单词字符col("abbr"):要检查的缩写内容(\\W|$):匹配非单词字符,或字符串结尾
这样就能精准匹配到MIDTOWN BEEF CO和SOUTH SHORE CO ACTION COUNCIL这两行,排除掉ALCON(因为"co"是单词内部的子串)。
大小写兼容处理
如果存在大小写不一致的情况(比如abbr是小写"co",name里是大写"CO"),可以统一转成小写后匹配:
from pyspark.sql.functions import col, concat, lower df.filter(lower(col('name')).rlike(concat("(^|\\W)", lower(col("abbr")), "(\\W|$)"))).display()
内容的提问来源于stack exchange,提问作者Carl
相关产品推荐
相关产品推荐

