如何在Python中实现Excel ISNUMBER(SEARCH)关键词模糊分类功能
Python 实现关键词分类方案
完全复现Excel嵌套IF(ISNUMBER(SEARCH()))的逻辑,按设定的规则顺序优先匹配,命中即返回对应分类,无匹配返回FALSE,最终仅输出「关键词+分类」两列结果,无冗余列,规则数量无上限。
依赖库仅需pandas,安装命令:pip install pandas
完整实现代码
import pandas as pd # 1. 定义匹配规则,顺序和Excel的IF嵌套顺序保持一致,先写的规则优先级更高 # 格式:(需要匹配的子串, 对应分类) match_rules = [ ("bag", "Bags"), ("rucksack", "Bags"), ("handbag", "Bags"), ("purse", "Personal Bags"), ("wallet", "Personal Bags") ] # 2. 定义匹配函数,和Excel SEARCH逻辑一致,默认不区分大小写 def get_category(keyword, rules): keyword_lower = str(keyword).lower() for substr, category in rules: if substr.lower() in keyword_lower: return category return False # 3. 读取数据,可替换为pd.read_excel("你的文件路径.xlsx")读取本地Excel # 以下为测试用示例数据 df = pd.DataFrame({ "Keyword": ["handbag", "rucksack", "drawstring bags", "tote bag", "cotton tote", "purse", "wallet"] }) # 4. 生成分类列 df["Category"] = df["Keyword"].apply(lambda x: get_category(x, match_rules)) # 5. 输出结果,可替换为df.to_excel("分类结果.xlsx", index=False)保存到本地 print(df)
输出效果
运行代码后输出结果和预期完全一致:
| Keyword | Category |
|---|---|
| handbag | Bags |
| rucksack | Bags |
| drawstring bags | Bags |
| tote bag | Bags |
| cotton tote | FALSE |
| purse | Personal Bags |
| wallet | Personal Bags |
自定义说明
- 如需新增分类规则,直接在
match_rules列表里按优先级顺序添加即可,没有数量限制 - 如需区分大小写匹配,删掉
get_category函数里的.lower()处理即可 - 读取本地文件、保存结果的路径替换为自身实际路径即可
内容的提问来源于stack exchange,提问作者sdevlin123
相关产品推荐
相关产品推荐

