如何基于条件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
相关产品推荐
相关产品推荐

