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

如何在Python中实现Excel嵌套IF公式并应用于DataFrame

所需库

只需要pandas(搭配numpy可提升逻辑判断效率,numpy通常随pandas默认安装)

实现步骤与代码

先拆解Excel嵌套IF公式的逻辑:

  • 当AD2、AE2、AF2、AG2均为"0"时,结果为"000-000"
  • 若上述条件不成立,且AE2、AF2、AG2均为"0",结果取AD列第一行的值(对应Excel的$AD$1)
  • 若上述条件不成立,且AF2、AG2均为"0",结果取AE列第一行的值(对应Excel的$AE$1)
  • 若上述条件不成立,且AG2为"0",结果取AF列第一行的值(对应Excel的$AF$1)
  • 其他情况,结果取AG2的值

代码示例

import pandas as pd
import numpy as np

# 初始化目标DataFrame
data = pd.DataFrame({
    'AD2': ['0', '0', '163', '256'],
    'AE2': ['0', '0', '163', '236'],
    'AF2': ['0', '0', '163', '236'],
    'AG2': ['0', '139', '0', '415']
})

# 提取各列第一行的固定值(对应Excel中的绝对引用$AD$1、$AE$1等)
ad1 = data['AD2'].iloc[0]
ae1 = data['AE2'].iloc[0]
af1 = data['AF2'].iloc[0]

# 定义条件列表与对应结果列表
conditions = [
    (data['AD2'] == '0') & (data['AE2'] == '0') & (data['AF2'] == '0') & (data['AG2'] == '0'),
    (data['AE2'] == '0') & (data['AF2'] == '0') & (data['AG2'] == '0'),
    (data['AF2'] == '0') & (data['AG2'] == '0'),
    data['AG2'] == '0'
]
results = [
    '000-000',
    ad1,
    ae1,
    af1
]

# 应用逻辑生成新列,default对应公式最后一个ELSE分支
data['Result'] = np.select(conditions, results, default=data['AG2'])

print(data)

运行结果

AD2  AE2  AF2  AG2    Result
0    0    0    0    0  000-000
1    0    0    0  139      139
2  163  163  163    0      0
3  256  236  236  415      415

说明

  • np.select比apply效率更高,适合处理大规模数据集
  • 因原始DataFrame中值为字符串类型,判断时用== '0';若为数值类型,改为== 0即可
  • 通过iloc[0]提取列首值,完美对应Excel中的绝对引用逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:15:53