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

Pandas实现按客户分组统计过往6个月及未来6个月销售额总和

按客户、月份统计过往/未来6个月销售额的实现方案

核心逻辑

对同一个客户的所有记录,按月份计数器的范围筛选求和:

  • 过往6个月销售额:统计同客户下,月份计数器大于等于当前月-6、且小于当前月的所有销售额之和
  • 未来6个月销售额:统计同客户下,月份计数器大于当前月、且小于等于当前月+6的所有销售额之和

Python Pandas 实现代码

不需要自定义for循环,直接用分组+滑动窗口即可高效计算:

import pandas as pd

# 1. 先按客户、月份计数器升序排序,保证时间顺序正确
df = df.sort_values(by=['客户', '月份计数器'], ignore_index=True)

# 2. 计算过往6个月销售额(不含当前月,不足6个月则统计所有存在的历史月份)
df['过往6个月销售额'] = df.groupby('客户')['销售额'].transform(
    lambda x: x.shift(1).rolling(window=6, min_periods=0).sum()
)

# 3. 计算未来6个月销售额(不含当前月,不足6个月则统计所有存在的后续月份)
df['未来6个月销售额'] = df.groupby('客户')['销售额'].transform(
    lambda x: x.shift(-1).rolling(window=6, min_periods=0).sum()
)

Excel 实现方案

如果使用Excel处理,直接用SUMIFS公式即可,假设数据结构如下:

列号列名
A客户
B月份计数器
C销售额

数据从第2行开始,表头在第1行:

  • D2(过往6个月销售额)输入公式:=SUMIFS(C:C,A:A,A2,B:B,">="&B2-6,B:B,"<"&B2)
  • E2(未来6个月销售额)输入公式:=SUMIFS(C:C,A:A,A2,B:B,">"&B2,B:B,"<="&B2+6)
    输入完成后选中D2、E2下拉填充所有行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 03:06:01