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

如何用Pandas计算多列间的滚动销售占比?

实现滚动窗口(前2行)的销售占比计算

直接上可运行的代码实现,完全匹配你的需求:

import pandas as pd

df = pd.DataFrame({
    'factory1sales': [0, 1, 2, 3, 4], 
    'factory2sales': [5, 6, 7, 8, 9]
})

# 计算每个工厂「当前行之前2行」的滚动总和
rolling_sum1 = df['factory1sales'].rolling(window=2, min_periods=2).sum().shift(1)
rolling_sum2 = df['factory2sales'].rolling(window=2, min_periods=2).sum().shift(1)

# 计算两个工厂滚动总和的合计值
total_rolling = rolling_sum1 + rolling_sum2

# 计算各工厂占总销售额的比例
df['rolling_proportion_factory1'] = rolling_sum1 / total_rolling
df['rolling_proportion_factory2'] = rolling_sum2 / total_rolling

print(df)

关键步骤解释

  1. 滚动总和计算:
    • rolling(window=2, min_periods=2):指定窗口大小为2,且必须凑够2行数据才计算总和(不足时返回NaN),避免出现不完整窗口的无效计算。
    • .shift(1):把滚动计算的结果向下偏移一行,这样当前行的滚动值就对应它之前的2行数据(比如索引4的结果对应索引2、3的数值)。
  2. 占比计算:用每个工厂的滚动总和除以两个工厂的总和,得到对应占比。

运行结果

输出和你给出的目标示例完全一致:

factory1sales  factory2sales  rolling_proportion_factory1  rolling_proportion_factory2
0              0              5                           NaN                           NaN
1              1              6                           NaN                           NaN
2              2              7                           NaN                           NaN
3              3              8                           NaN                           NaN
4              4              9                          0.25                          0.75

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 10:02:32