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

如何根据动态增减关键词自动过滤Pandas DataFrame

Pandas 动态关键词过滤实现方案

核心逻辑是将关键词统一存储为可动态修改的列表,通过批量生成匹配条件、聚合布尔掩码的方式实现自动适配,无需手动增减&连接的判断语句。


第一步:统一管理关键词

将所有基础关键词、特征关键词存储为列表,后续增删关键词只需要修改对应列表内容,不需要改动过滤逻辑代码:

# 基础关键词:命中结果需要同时包含列表内所有关键词,增删直接修改列表
base_keywords = ['tarifa']
# 特征关键词:用于细分过滤的特征词集合,增删直接修改列表
feature_keywords = ['mensual', 'anual']

第二步:封装通用过滤函数

封装可复用的关键词过滤函数,自动适配传入的关键词列表长度,自动处理字段空值避免报错:

import numpy as np

def kw_filter(df, target_col, must_contain_list):
    # 逐个生成每个关键词的匹配布尔序列
    match_masks = [
        df[target_col].str.contains(
            kw,
            na=False,  # 空值直接判定为不匹配
            case=False, # 可选:不区分大小写,不需要可删除
            regex=False # 可选:把关键词当普通字符串匹配,避免特殊字符触发正则逻辑,不需要可删除
        )
        for kw in must_contain_list
    ]
    # 对所有匹配条件取逻辑与:必须同时包含列表内所有关键词
    final_mask = np.logical_and.reduce(match_masks)
    return df[final_mask]

第三步:调用方式

单组条件过滤

直接拼接基础关键词和需要的特征关键词传入函数即可,比如匹配同时包含tarifa和mensual的行:

kw_s = kw_filter(
    df=kw_df,
    target_col='transaction_description',
    must_contain_list=base_keywords + ['mensual']
)

批量生成所有特征词对应的过滤结果

如果需要遍历所有特征词、分别生成「基础词+单个特征词」的过滤结果,直接循环特征词列表即可,后续新增/删除特征词不需要修改循环代码:

# 用字典存储所有过滤结果,key为特征词,value为过滤后的DataFrame
all_filter_result = {}
for f_kw in feature_keywords:
    all_kws = base_keywords + [f_kw]
    all_filter_result[f_kw] = kw_filter(kw_df, 'transaction_description', all_kws)

# 调用示例:取匹配anual的结果
kw_s_anual = all_filter_result['anual']

扩展说明

  • 如果需要「包含任意一个关键词即可命中」的逻辑,只需要把函数里的np.logical_and.reduce替换为np.logical_or.reduce
  • 如果需要多层级关键词组合(比如基础词+二级特征词+三级特征词),只需要按规则拼接关键词列表传入函数即可,不需要修改核心过滤逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:18:17