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

如何用Pandas实现跨两个数据集的Excel SUMIFS函数?

Pandas实现跨工作表的SUMIFS多条件求和

先明确Excel原公式逻辑

你的Excel公式 =SUMIFS('Sheet_1'!$D:$D, 'Sheet_2'!$A:$A,">"&'Some_Value', 'Sheet_2'!$B:$B,"<="&'Some_Value_2') 核心逻辑是:

仅当Sheet_2中同一行的A列值大于Some_Value,且B列值小于等于Some_Value_2时,将Sheet_1对应行的D列值计入求和结果。
注:Excel的SUMIFS默认按行对齐条件区域与求和区域,要求两个工作表的行数一致,否则会按最短表的行数匹配。

Pandas实现方案

1. 读取工作表数据

先把两个工作表读取为Pandas DataFrame:

import pandas as pd

# 替换为你的实际文件路径
sheet1 = pd.read_excel("your_excel_file.xlsx", sheet_name="Sheet_1")
sheet2 = pd.read_excel("your_excel_file.xlsx", sheet_name="Sheet_2")

2. 方案一:布尔索引直接计算(最直观)

先基于Sheet_2生成条件掩码,再用掩码筛选Sheet_1的目标列求和:

# 替换为你的实际条件值
some_value = 10
some_value_2 = 20

# 创建条件掩码:Sheet_2中满足条件的行标记为True
condition_mask = (sheet2["A"] > some_value) & (sheet2["B"] <= some_value_2)

# 筛选Sheet_1中对应行的D列并求和
total_sum = sheet1.loc[condition_mask, "D"].sum()

3. 方案二:合并后用df.query(延续你熟悉的用法)

如果习惯用df.query(),可以先将两个表按行索引对齐合并,再执行查询求和:

# 按行索引合并两个表(保证行对齐)
combined_df = pd.concat([sheet1, sheet2], axis=1)

# 使用query筛选并求和
total_sum = combined_df.query("A > @some_value and B <= @some_value_2")["D"].sum()

特殊情况:工作表通过关联键匹配

如果两个工作表不是按行索引对齐,而是通过某个共同字段(比如ID)关联,需要先合并再计算:

# 按关联键合并两个表(假设共同键为"ID")
merged_df = pd.merge(sheet1, sheet2, on="ID")

# 筛选条件并求和
total_sum = merged_df.query("A > @some_value and B <= @some_value_2")["D"].sum()

关键注意事项

  • 若使用行对齐方式,必须确保Sheet_1和Sheet_2的行数完全一致,且每行是对应的记录,否则结果会出错。
  • 若工作表有大量数据,建议避免使用整列(如Excel中的$D:$D),而是指定具体数据范围,提升Pandas运行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 11:20:25