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

滑动时间窗口下DataFrame中percentage_change列的乘积计算需求

滑动窗口内百分比变化的乘积计算方案

问题描述

我有一个包含date和percentage_change两列的DataFrame,需要计算不同滑动窗口内percentage_change的乘积:

  • 窗口大小=2时,计算相邻2行的乘积,共得到9个结果;
  • 窗口大小=3时,计算连续3行的乘积,共得到8个结果;
  • 窗口大小=9时,计算连续9行的乘积,共得到2个结果。

原始DataFrame数据:

date        percentage_change
2010-01-01  1.1
2011-01-01  0.95
2013-01-01  1.3
2014-01-01  1.2
2015-01-01  1.1
2016-01-01  0.8
2017-01-01  0.6
2018-01-01  1.1
2019-01-01  1.7
2020-01-01  0.9

解决方案

使用Pandas的rolling()方法结合prod()函数可以直接实现滑动窗口乘积计算,步骤如下:

1. 构造DataFrame

import pandas as pd

data = {
    'date': ['2010-01-01', '2011-01-01', '2013-01-01', '2014-01-01', '2015-01-01',
             '2016-01-01', '2017-01-01', '2018-01-01', '2019-01-01', '2020-01-01'],
    'percentage_change': [1.1, 0.95, 1.3, 1.2, 1.1, 0.8, 0.6, 1.1, 1.7, 0.9]
}
df = pd.DataFrame(data)

2. 计算不同窗口的滑动乘积

窗口大小=2

# 计算滑动乘积并去除NaN值
window_2_prod = df['percentage_change'].rolling(window=2).prod().dropna()
# 关联对应的日期范围,让结果更直观
window_2_result = pd.DataFrame({
    'date_range': [f"{df['date'].iloc[i]} → {df['date'].iloc[i+1]}" for i in range(len(df)-1)],
    'product': window_2_prod.values
})
print("窗口大小=2的结果:")
print(window_2_result)

输出结果包含9条记录,对应每相邻两行的乘积。

窗口大小=3

window_3_prod = df['percentage_change'].rolling(window=3).prod().dropna()
window_3_result = pd.DataFrame({
    'date_range': [f"{df['date'].iloc[i]} → {df['date'].iloc[i+2]}" for i in range(len(df)-2)],
    'product': window_3_prod.values
})
print("\n窗口大小=3的结果:")
print(window_3_result)

输出结果包含8条记录。

窗口大小=9

window_9_prod = df['percentage_change'].rolling(window=9).prod().dropna()
window_9_result = pd.DataFrame({
    'date_range': [f"{df['date'].iloc[i]} → {df['date'].iloc[i+8]}" for i in range(len(df)-8)],
    'product': window_9_prod.values
})
print("\n窗口大小=9的结果:")
print(window_9_result)

输出结果包含2条记录。

关键说明

  • rolling(window=N)会创建一个大小为N的滑动窗口,默认从当前行向前取N行数据;
  • prod()自动计算窗口内所有数值的乘积;
  • dropna()用于去除前N-1个未填满窗口的NaN值,得到符合需求的结果数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 08:04:52