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

如何基于条件DataFrame使用numpy select批量为交易描述分配分类

使用条件DataFrame自动生成交易分类的解决方案

我来帮你搞定这个需求!既然你想通过条件DataFrame来管理所有匹配规则,不用硬编码一堆str.contains条件,我们可以动态生成np.select需要的条件和值列表,完美适配你的场景。

完整实现代码

import pandas as pd
import numpy as np

# 1. 你的交易数据示例(替换成实际数据)
df2 = pd.DataFrame({
    'Description': [
        'groceries Jumbo on date',
        'mortgage payment Aegon.',
        'transfer picnic.'
    ]
})

# 2. 条件管理DataFrame(可以直接从Excel/CSV读取,方便维护)
conditions_dict = {
    'Condition': ['AEGON', 'IB/PVV', 'Picnic', 'Jumbo'],
    'Value': ['Hypotheek', 'Hypotheek', 'Boodschappen', 'Boodschappen']
}
df_conditions = pd.DataFrame(conditions_dict)

# 3. 动态生成conditions和values列表
# 用列表推导式遍历条件表,生成每个关键词的匹配规则
# case=False:不区分大小写(比如Aegon和AEGON都能匹配,适配你的示例)
conditions = [
    df2['Description'].str.contains(cond, na=False, case=False) 
    for cond in df_conditions['Condition']
]
# 把分类值转换成列表
values = df_conditions['Value'].tolist()

# 4. 应用分类映射
df2['Classificatie'] = np.select(conditions, values, default='unknown')

# 查看结果
print(df2)

输出结果

Description Classificatie
0  groceries Jumbo on date  Boodschappen
1   mortgage payment Aegon.     Hypotheek
2        transfer picnic.   Boodschappen

关键细节说明

  • 动态生成条件:通过列表推导式遍历df_conditions['Condition']的每个关键词,自动生成对应的str.contains匹配规则,不用手动写几十条重复代码。
  • 大小写兼容:加了case=False参数,确保交易描述里的关键词不管大小写(比如Aegon和AEGON,picnic和Picnic)都能正确匹配,如果你需要严格区分大小写,去掉这个参数即可。
  • 易维护性:以后新增/修改分类规则,只需要更新df_conditions的内容(甚至可以把这个条件表存在Excel/CSV里,用pd.read_excel/pd.read_csv读取),完全不用改动核心的分类逻辑代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 18:02:46