如何在Python中实现Excel INDEX+MATCH功能计算产品月度销量差值
Python实现Excel INDEX+MATCH匹配计算销量差值方案
工具选择
优先使用pandas库,它是专门为表格数据处理设计的工具,比numpy更适合这类行列匹配、关联计算的场景,代码更简洁易读。
实现步骤
1. 安装依赖库
首先安装pandas和读写Excel所需的openpyxl库,执行命令:pip install pandas openpyxl
2. 完整代码实现
import pandas as pd # 1. 读取Excel文件,替换为你的实际文件路径 df = pd.read_excel("你的文件路径.xlsx", engine="openpyxl") # 2. 拆分7月、8月数据,重命名列避免冲突 # 列索引从0开始计数,A列为0、B列为1、C列为2、D列为3 july_data = df.iloc[:, [0, 1]].rename(columns={df.columns[0]: "产品名", df.columns[1]: "7月销量"}) aug_data = df.iloc[:, [2, 3]].rename(columns={df.columns[2]: "产品名", df.columns[3]: "8月销量"}) # 3. 按产品名精准匹配,等价于Excel INDEX+MATCH的精准匹配逻辑 # how参数说明:left保留所有8月产品,inner只保留两个月都存在的产品 merge_df = pd.merge(aug_data, july_data, on="产品名", how="left") # 4. 计算销量差值:8月销量 - 7月销量 merge_df["销量差值(8月-7月)"] = merge_df["8月销量"] - merge_df["7月销量"] # 可选:将结果保存到新Excel文件 merge_df.to_excel("销量差值计算结果.xlsx", index=False, engine="openpyxl") # 打印结果校验 print(merge_df)
关键逻辑说明
- pd.merge的
on="产品名"参数就是实现两个表按产品名精准匹配的逻辑,完全等价Excel里的MATCH精准匹配功能 - 匹配后直接对两列销量做减法,不需要循环逐行计算,pandas会自动按行对齐计算,效率远高于手动逐行处理
- 如果有产品只在8月存在、7月没有匹配记录,对应的7月销量和差值会显示为
NaN,如果需要处理空值可以加一行merge_df = merge_df.fillna(0)把空值替换为0即可
内容的提问来源于stack exchange,提问作者swlok
相关产品推荐
相关产品推荐

