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

Python批量分组零售银行交易的优化方法求助

优化零售银行客户交易分组的Python实现方案

兄弟,你之前用嵌套pd.np.where的方式确实太折磨人了——几千个商户的话,那代码得长到看不到头!完全可以用商户规则列表的方式来重构,不仅简洁,后期维护也方便太多了。

核心思路

把所有商户的匹配规则(关键词+目标分组名称)集中管理成一个列表,然后遍历每条交易记录去匹配规则,匹配到就返回对应分组,没匹配到就归为OTHER。

具体实现步骤

1. 定义商户匹配规则

先把所有需要匹配的关键词和对应的分组名称整理成元组列表,后续新增/修改商户只需要在这里调整,不用动逻辑代码:

# 定义商户匹配规则:(匹配关键词, 目标分组名称)
merchant_rules = [
    ("PNP ", "PICKNPAY"),
    ("CHECKERS", "CHECKERS"),
    ("MRPRICE", "MRPRICE"),
    ("FOOD LOVER", "FOODLOVERMARKET"),
    ("DISCHEM", "DISCHEM"),
    ("DIS-CHEM", "DISCHEM"),
    ("OK FOODS", "OKFOODS"),
    ("FASHION EXPRESS", "FASHIONEXPRESS"),
    ("MTC", "MTC"),
    ("TELECOM", "TELECOM"),
    ("KFC", "KFC"),
    ("ACKERMANS", "ACKERMANS"),
    ("SHOPRITE", "SHOPRITE"),
    ("USAVE", "SHOPRITE"),  # USAVE归到SHOPRITE组
    ("S/STATION", "SERVICESTATION"),
    ("SERVICE STATION", "SERVICESTATION"),
    ("SOULSTICE DAY SPA", "SOULSTICESPA"),
    ("CLICKS", "CLICKS"),
    ("JET ", "JET"),
    ("PEP ", "PEP"),
    ("WOERMANN", "WOERMANN")
]

2. 处理空值(和你之前的逻辑一致)

temp = tranx.TRANX.fillna("0")

3. 编写分类函数并应用

写一个简单的函数,遍历规则列表检查交易文本,返回对应的分组:

def categorize_transaction(tranx_text):
    for keyword, group in merchant_rules:
        if keyword in tranx_text:
            return group
    return "OTHER"

# 将函数应用到整个交易文本列
tranx['Activity_2'] = temp.apply(categorize_transaction)

进阶优化:提升大数据集处理效率

如果你的交易数据量特别大,apply逐行处理可能会有点慢,这时候可以用正则表达式批量匹配,效率更高:

import re

# 构建正则模式:优先匹配长关键词(避免短关键词提前匹配),用|分隔所有关键词
# 注意:如果有重叠关键词,要把长的放在规则列表前面
pattern = '|'.join([f'(?P<{group}>{re.escape(keyword)})' for keyword, group in merchant_rules])

# 提取匹配结果,取第一个非空的分组,最后填充OTHER
tranx['Activity_2'] = temp.str.extract(pattern, flags=re.IGNORECASE).bfill(axis=1).iloc[:, 0].fillna("OTHER")

这种方式的优势

  • 易维护:新增/修改商户规则只需要在merchant_rules里加/改元组,不用动核心逻辑
  • 可读性强:不像嵌套np.where那样层层嵌套,逻辑一目了然
  • 扩展性好:哪怕几千个商户,也只需要把规则整理成列表即可,不会让代码无限膨胀

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:14:09