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

如何在Python中复现Excel的sumifs功能并完成销售额调整计算

Python 复现Excel SUMIFS 调整销售额计算逻辑

我们可以用pandas快速实现你需要的计算逻辑,代码可直接运行,结果和你举例的计算结果完全匹配:

步骤1:导入依赖&读取数据

import pandas as pd

# 从本地Excel读取数据的话用这行,替换成你自己的文件路径
# df = pd.read_excel('你的数据文件.xlsx')

# 这里是构造和你截图一致的样例数据用于测试,实际使用可以删掉这段
df = pd.DataFrame({
    'Territory': ['AMS','AMS','AMS','AMS','AMS','APAC','APAC','APAC','APAC','APAC'],
    'Product': ['Product1','Product2','Product3','Product4','All','Product1','Product2','Product3','Product4','All'],
    'Sales': [100000, 200000, 200000, 100000, 700000, 200000, 300000, 300000, 200000, 1200000]
})

步骤2:执行计算

逻辑完全对齐你描述的SUMIFS规则:先统计每个区域所有非All产品的总销售额,再匹配对应区域All产品的总基准销售额,最后按占比计算调整后销售额。

# 提取每个区域All产品对应的基准销售额
territory_all_sales = df[df['Product'] == 'All'].set_index('Territory')['Sales'].to_dict()
# 统计每个区域非All产品的总销售额
territory_product_total = df[df['Product'] != 'All'].groupby('Territory')['Sales'].sum().to_dict()

# 计算调整后销售额,All行默认留空,可按需修改
df['Adjusted_Sales'] = df.apply(
    lambda x: round(x['Sales'] / territory_product_total[x['Territory']] * territory_all_sales[x['Territory']], 0) 
    if x['Product'] != 'All' else None,
    axis=1
)

步骤3:结果导出

计算完成后可以直接导出到Excel:

df.to_excel('调整后销售额结果.xlsx', index=False)

运行后AMS区域Product1的调整后销售额为116667,APAC区域Product1的调整后销售额为240000,和你示例的计算结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:45:08