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

Pandas中基于映射规则新增列将列值归类到预设分组的高效实现方法

Pandas高效实现拒因分组的实现方案

核心思路是把你现有需要反查的映射字典预处理为正向查找字典,配合Pandas原生向量化操作实现百万级数据秒级处理,无额外计算开销。

步骤1:构造正向查找字典

你现有结构为{分组名: [对应原取值列表]}的映射字典,只需做一次字典推导式翻转,得到{原取值: 对应分组名}的查找表,预处理复杂度为O(n),n为所有原取值的总个数,消耗完全可以忽略:

# 你的原始分组规则
group_rule = {
    "financial": ["invalid insurance", "not enough money"],
    "patient problems": ["behavior issues", "anger issues"],
    "occupancy": ["no space in hospital"]
    # 剩余分组规则自行补充
}

# 翻转得到正向查找表
lookup_dict = {reason: group for group, reason_list in group_rule.items() for reason in reason_list}

步骤2:向量化生成新列

直接用Pandas自带的map方法匹配取值,该操作为底层C实现的向量化运算,远快于Python层的循环、apply等操作,就算是千万级数据集也能快速完成:

# 生成归类后的新列
df["reason_for_rejection_grouped"] = df["reason_for_rejection"].map(lookup_dict)

# 可选:如果存在未匹配到的拒因,统一填充为other(可根据你的需求自定义默认分组)
df["reason_for_rejection_grouped"] = df["reason_for_rejection_grouped"].fillna("other")

效果验证

拿你提供的样例数据运行后,输出结果和预期完全一致:

IDreason_for_rejectionreason_for_rejection_grouped
1invalid insurancefinancial
2behavior issuespatient problems
3not enough moneyfinancial
4no space in hospitaloccupancy
5anger issuespatient problems

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:15:03