Pandas如何基于Name列关键词批量为Brand列匹配赋值对应品牌
批量匹配品牌字段实现方案
不需要逐行写完整产品名做等值匹配,只需要维护「品牌-对应专属关键词列表」的映射规则,就可以一次性完成全表品牌列赋值,后续新增品牌、关键词只需要更新映射字典即可,不用重复写匹配逻辑。
核心实现代码
import pandas as pd # 1. 在这里维护所有品牌和对应的产品关键词,后续新增规则直接追加即可 brand_keyword_map = { "Yeti": ["Rambler"], "Pelican": ["Pelican"], # 示例:其他品牌按相同格式添加,一个品牌可以绑定多个关键词 # "Hydro Flask": ["Hydro Flask", "Wide Mouth", "Standard Mouth"] } # 初始化Brand空列 df["Brand"] = "" # 2. 遍历规则批量匹配赋值 for brand, keywords in brand_keyword_map.items(): # 拼接当前品牌所有关键词为正则匹配模式,默认不区分大小写 match_pattern = "|".join(keywords) # Name列包含任意一个对应关键词,就给该行Brand列赋值对应品牌名 df.loc[df["Name"].str.contains(match_pattern, case=False, na=False), "Brand"] = brand
使用提示
- 关键词尽量选择品牌独有的产品标识,避免不同品牌的关键词重叠导致匹配错误
- 如果存在同一条产品名命中多个品牌关键词的情况,把优先级更高的品牌规则放在映射字典的靠前位置即可
- 匹配完成后可以执行
df[df["Brand"] == ""]筛选出所有未匹配到品牌的行,针对这部分补充关键词规则即可,不用逐行手动赋值 - 如果需要严格区分关键词大小写,把
str.contains里的case=False改成case=True就行
内容的提问来源于stack exchange,提问作者jchase1862
相关产品推荐
相关产品推荐

