
10年青少年编程教育经验 | 资深Python专家
前大厂技术总监 | 现编程教育创业者
专注青少年编程教育技能提升

大家好,我是浩浩学编程的方老师,这是excel办公自动化系列的第20课。
今日技能
📱 一文给大家快速掌握python处理excel的复杂公式问题-if嵌套
你是否写过长达 3 行的 Excel 公式?
你是否因为 VLOOKUP 找不到值而抓狂?
你是否在 50 万行数据面前看着 Excel 卡成PPT?
今天这篇文章,方老师带你用 Python 的 pandas 库,优雅地解决这些痛点。
不需要你是编程大神,跟着例子一步步来,你也能学会!
一、先说句大实话:Excel 公式不是不好,是"复杂场景"扛不住
Excel 是伟大的工具,日常处理几百行数据,写个 =SUM(A1:A10) 完美解决求和问题。
但现实往往是这样的(根据不同阈值显示不同名称):
=IF(AND(A2>100, B2="VIP"),C2*0.8, IF(OR(A2>50, D2="促销"),C2*0.9, C2))
再比如,你要根据多个条件做汇总:
=SUMIFS(C:C, A:A, "北京",B:B, "手机",D:D, ">2024-01-01")
公式本身没问题,但——

而 pandas,恰好是来解决这些问题的。
二、Pandas 是什么?一句话解释(有朋友提问答疑)
pandas = Python 版的超级 Excel。
它把表格叫做 DataFrame(数据框),每一列叫做 Series(序列)。
你可以把它想象成一个"可以用代码操控的 Excel 表格"。
安装只需一行:
pip install pandas使用只需两行:
import pandas as pd# 读取 Excel 文件,就像打开一个工作簿df = pd.read_excel("销售数据.xlsx")
就这么简单,你的 Excel 数据已经变成了一个可以编程操作的对象。
三、先建关联:Excel 函数 → Pandas 写法对照表
别急着写代码,先看这张对照表,建立"翻译"的感觉:

发现规律了吗?
Excel 是"对单元格操作",pandas 是"对整列操作"。
一次写好,整列搞定,不用拖拽填充柄。
四、实战演练:针对数据用if打标签
下面我们用一个虚拟的销售数据表来演示。
假设数据长这样:

用代码创建这个表:
import pandas as pddf = pd.DataFrame({'订单号': [1001, 1002, 1003, 1004, 1005],'城市': ['北京', '上海', '北京', '广州', '上海'],'商品': ['手机', '电脑', '手机', '平板', '手机'],'销售额': [5999, 8999, 4599, 3299, 5999],'日期': pd.to_datetime(['2024-03-15', '2024-03-16','2024-03-17', '2024-03-18', '2024-03-19']),'客户等级': ['VIP', '普通', 'VIP', '普通', 'VIP']})
场景 1:嵌套 IF —— 多条件打标签
需求:根据销售额和客户等级,计算折扣价格:
VIP 且销售额 ≥ 5000 → 打 8 折
VIP 且销售额 < 5000 → 打 9 折
普通客户 → 不打折
Excel 写法(看着就头疼):
=IF(AND(E2="VIP", D2>=5000), D2*0.8,IF(AND(E2="VIP", D2<5000), D2*0.9, D2))
Pandas 写法(清晰多了):
import numpy as np# 方式一:用 np.select(推荐!条件多的时候特别好用)conditions = [(df['客户等级'] == 'VIP') & (df['销售额'] >= 5000),(df['客户等级'] == 'VIP') & (df['销售额'] < 5000),]choices = [df['销售额'] * 0.8, df['销售额'] * 0.9]df['折后价'] = np.select(conditions, choices,default=df['销售额'])print(df[['客户等级', '销售额', '折后价']])
划重点:
np.select 把"条件"和"结果"分开写,像菜单一样清晰。
想加新条件?
往 conditions 和 choices 里各加一行就行,不用改已有逻辑。
场景 2:SUMIFS / COUNTIFS —— 多条件汇总统计
需求:统计每个城市、每个商品的总销售额和订单数。
Excel 写法:
=SUMIFS(D:D, B:B, "北京", C:C, "手机")=COUNTIFS(B:B, "北京", C:C, "手机")
每个组合都要写一个公式,城市×商品有几十种组合的话……
Pandas 写法:
# 一行代码,所有组合的汇总全部搞定summary = df.groupby(['城市', '商品']).agg(总销售额=('销售额', 'sum'),订单数=('销售额', 'count'),平均销售额=('销售额', 'mean')).reset_index()print(summary)
划重点:
groupby + agg 是 pandas 的"万能汇总公式"。
不管有多少种组合,一行代码全部算完。
这在 Excel 里可能要写一整列的 SUMIFS 公式。
五、总结
一句话总结:Excel 是"手动挡",pandas 是"自动挡"。
日常小数据用 Excel 没问题,但当你发现自己在反复写复杂公式、反复做相同操作时,就是时候升级了。
有问题欢迎留言讨论,我会一一解答 👇
🎉 同学们,看到这里,你学会了吗!
方老师说: 🚀 现在屏幕前的你已经比90%的同龄人领先一步了!
接下来可以:
介绍一下pandas输出excel中复杂公式实现综合处理,来个狠的(下期教程教!)
⚠️ 遇到问题?评论区甩截图,方老师尽量在24小时内回复!
夜雨聆风