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

列表字典中子串反向查找实现DataFrame支付交易自动分类

支付交易DataFrame收款方分类Python实现方案

实现代码

首先基于Pandas原生方法实现需求,性能优异且符合Python风格:

import pandas as pd
import numpy as np

# 构造示例测试数据,实际使用时替换为你的DataFrame即可
df = pd.DataFrame({
    'beneficiary': [
        'REWE SAGT DANKE. ...',
        np.nan,
        'OBI BAU- U. HEIMWER//BERLIN/DE / OBI SAGT DANKE',
        'NETFLIX INTERNATIONAL B.V.'
    ]
}, index=[12,13,14,15])

# 你的分类字典
categories = {"Groceries": ["EDEKA", "REWE", "OBI"],
            "Entertainment": ["NETFLIX"]}

# 初始化分类列为空
df['category'] = pd.NA

# 遍历分类字典完成匹配
for cate, keywords in categories.items():
    # 多个关键词拼接为正则匹配规则
    pattern = '|'.join(keywords)
    # 匹配规则:收款方包含关键词、且还未分配分类、NaN值默认不匹配
    match_mask = df['beneficiary'].str.contains(pattern, na=False) & df['category'].isna()
    df.loc[match_mask, 'category'] = cate

运行后输出的df完全符合预期结果:

indexbeneficiarycategory
12REWE SAGT DANKE. ...Groceries
13NaN
14OBI BAU- U. HEIMWER//BERLIN/DE / OBI SAGT DANKEGroceries
15NETFLIX INTERNATIONAL B.V.Entertainment

方案说明

  • 匹配默认大小写敏感,若需要忽略大小写可在str.contains方法中添加case=False参数
  • na=False参数指定NaN值的匹配结果返回False,避免触发空值报错
  • 代码逻辑默认先出现的分类优先级更高,若需调整优先级只需修改categories字典中键的排列顺序即可
  • 若关键词量级过万导致正则匹配效率低,可以替换为Aho-Corasick多模式匹配算法优化性能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:24:03