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

使用Pandas DataFrame时替换多重if判断语句的可行方案咨询

方案1:字典映射+map向量化运算(优先推荐)

针对你这种等值匹配的场景,这是性能最高、代码最简洁的方案,新增条件只需要修改映射字典即可:

# 定义A列取值和对应增量的映射关系
add_map = {1: 100, 2: 200, 3: 300, 5: 400, 9: 500}
# 批量映射后统一计算
df['A10'] = df['A'] + df['B'] + df['A'].map(add_map)

方案2:np.select 多条件匹配

适合存在非等值、多列组合等复杂条件的场景,条件和对应取值分开维护,可读性高:

import numpy as np

# 按顺序定义匹配条件列表
conditions = [
    df['A'] == 1,
    df['A'] == 2,
    df['A'] == 3,
    df['A'] == 5,
    df['A'] == 9
]
# 与条件顺序一一对应的增量列表
add_vals = [100, 200, 300, 400, 500]
# 匹配计算,default参数为未匹配到条件时的默认增量,可按需修改
df['A10'] = df['A'] + df['B'] + np.select(conditions, add_vals, default=0)

方案3:apply + 自定义函数

适合计算逻辑极其复杂,需要嵌套多步判断的场景,仅推荐小数据量下使用:

add_map = {1: 100, 2: 200, 3: 300, 5: 400, 9: 500}

def calc_a10(row):
    # 可在此处添加任意自定义判断逻辑
    add_val = add_map.get(row['A'], 0)
    return row['A'] + row['B'] + add_val

df['A10'] = df.apply(calc_a10, axis=1)

选型建议

  • 仅需要等值匹配时优先选方案1,运行效率远高于其他方案,维护成本最低
  • 存在范围判断、多列组合判断时选方案2
  • 逻辑复杂度高、数据量小于10万行时可以选方案3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:15:00