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

如何在Pandas中实现指定Excel嵌套IF公式生成新列?

解决方法

你的需求可以拆解为两步逻辑:优先从当前行的指定列取值,无匹配时继承上一行结果。直接用ffill()无法满足是因为缺少了先根据条件筛选当前行有效值的步骤,以下是具体实现代码:

import pandas as pd
import numpy as np

# 定义触发条件和对应的取值列
conditions = [
    df['P'] == 'Organisation',
    df['R'] == 'Organisation',
    df['T'] == 'Organisation',
    df['V'] == 'Organisation',
    df['X'] == 'Organisation',
    df['Z'] == 'Organisation',
    df['AB'] == 'Organisation'
]

values = [
    df['O'],
    df['Q'],
    df['S'],
    df['U'],
    df['W'],
    df['Y'],
    df['AA']
]

# 第一步:根据条件生成初始列,未匹配的行设为NaN
df['AI'] = np.select(conditions, values, default=np.nan)

# 第二步:对未匹配的行向前填充,继承上一行的结果
df['AI'] = df['AI'].ffill()

补充说明

  1. np.select()会按顺序匹配条件,一旦某行满足第一个条件,就会取对应的值,和Excel中IF嵌套的逻辑完全一致
  2. 如果第一行没有任何触发条件,ffill()后会保留NaN,你可以根据实际需求添加fillna()设置默认值,比如:
    df['AI'] = df['AI'].ffill().fillna('默认值')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:45:15