乐于分享
好东西不私藏

【从零开始学excel办公自动化】告别 Excel 公式地狱!用 Pandas 轻松搞定嵌套if操作

【从零开始学excel办公自动化】告别 Excel 公式地狱!用 Pandas 轻松搞定嵌套if操作
#办公自动化 #从零开始学 #pandas #excel #if

10年青少年编程教育经验 | 资深Python专家

前大厂技术总监 | 现编程教育创业者

专注青少年编程教育技能提升

大家好,我是浩浩学编程的方老师,这是excel办公自动化系列的第20课。

今日技能

📱 一文给大家快速掌握python处理excel的复杂公式问题-if嵌套

你是否写过长达 3 行的 Excel 公式?

你是否因为 VLOOKUP 找不到值而抓狂?

你是否在 50 万行数据面前看着 Excel 卡成PPT?

今天这篇文章,方老师带你用 Python 的 pandas 库,优雅地解决这些痛点。

不需要你是编程大神,跟着例子一步步来,你也能学会!

一、先说句大实话:Excel 公式不是不好,是"复杂场景"扛不住

Excel 是伟大的工具,日常处理几百行数据,写个 =SUM(A1:A10) 完美解决求和问题。

但现实往往是这样的(根据不同阈值显示不同名称):

=IF(AND(A2>100B2="VIP"),     C2*0.8IF(      OR(A2>50D2="促销"),       C2*0.9C2    ))

再比如,你要根据多个条件做汇总:

=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({    '订单号':   [10011002100310041005],    '城市':     ['北京''上海''北京''广州''上海'],    '商品':     ['手机''电脑''手机''平板''手机'],    '销售额':   [59998999459932995999],    '日期':     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.9D2))

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小时内回复

#python #Pandas #数据分析 #浩浩学编程 #职场技能 #excel