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

PySpark如何按数组品牌列表模糊匹配筛选DataFrame行

你可以通过构造正则匹配规则,结合PySpark内置的rlike方法实现模糊匹配筛选,完整实现步骤如下:

完整代码示例

import re
from pyspark.sql import functions as F

# 替换为你的300+快餐品牌列表
brand_list = ["Mcdonald's", "Subway", "KFC", "Burger King"]

# 1. 转义品牌名中的正则特殊字符(比如单引号、点、星号等),避免匹配异常
escaped_brand_list = [re.escape(brand) for brand in brand_list]
# 2. 拼接为「品牌1|品牌2|品牌3」格式的正则规则,含义为匹配任意一个品牌名
match_pattern = "|".join(escaped_brand_list)

# 3. 筛选Name列包含任意品牌名的行,自动排除不匹配的行
result_df = df.filter(F.col("Name").rlike(match_pattern))

可选补充

如果需要额外标注每行匹配到的具体品牌,可以新增一列提取匹配结果:

result_df = result_df.withColumn("matched_brand", F.regexp_extract(F.col("Name"), match_pattern, 0))

常见场景适配

  • 大小写不敏感匹配:如果门店名存在大小写不统一的情况(比如出现mcdonald's、McDonald's等变体),可以统一转小写后匹配:
    escaped_brand_list = [re.escape(brand.lower()) for brand in brand_list]
    match_pattern = "|".join(escaped_brand_list)
    result_df = df.filter(F.lower(F.col("Name")).rlike(match_pattern))
    
  • 性能说明:300个品牌对应的正则规则长度很小,PySpark的rlike为原生实现,无需额外优化即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:54:05