我有一个数据帧,其中索引是一个DatetimeIndex,具有每日频率.它包含365行,一年中的每一天一行.当计算滚动和时,前几个元素总是NaN(如预期),但我希望它们有实际值.

例如,如果使用3个样本的滚动窗口,则1月1日的值应为12月30日、12月31日和1月1日的总和.类似地,1月2日的值应为12月31日、1月1日和1月2日的总和.

我已经研究了Pandas 滚动函数的所有参数,但找不到任何可以提供这种包装的参数.任何帮助都将不胜感激.下面的代码是说明滚动行为的最小示例.

import numpy as np
import pandas as pd

fake_data = pd.DataFrame(index=pd.date_range('2022-1-1', '2022-12-31', freq='D'),
                         data=np.random.random(365))
rolling_fake_data = fake_data.rolling(3).sum()

推荐答案

基本上,您需要一个没有开始或结束的循环数据对象.不确定是否存在!

我能想到的最好的解决方法是在开始之前重复本系列的结尾.

n = 3
rolling_fake_data = (
    pd.concat([fake_data[-n:], fake_data])
).rolling(n).sum()[n:]

# Test
assert(rolling_fake_data.loc["2022-01-01", 0] ==
    fake_data.loc[["2022-12-30", "2022-12-31", "2022-01-01"], 0].sum())

Python相关问答推荐

如何在超时的情况下同步运行Matplolib服务器端?该过程随机挂起

遵循轮廓中对象方向的计算线

数字梯度的意外值

如何让我的Tkinter应用程序适合整个窗口,无论大小如何?

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

对某些列的总数进行民意调查,但不单独列出每列

无法通过python-jira访问jira工作日志(log)中的 comments

Vectorize多个头寸的止盈/止盈回溯测试pythonpandas

无法定位元素错误404

Pre—Commit MyPy无法禁用非错误消息

如何从数据库上传数据到html?

形状弃用警告与组合多边形和多边形如何解决

删除marplotlib条形图上的底边

isinstance()在使用dill.dump和dill.load后,对列表中包含的对象失败

需要帮助重新调整python fill_between与数据点

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

使用Openpyxl从Excel中的折线图更改图表样式

用SymPy在Python中求解指数函数

如何从pandas DataFrame中获取. groupby()和. agg()之后的子列?

在numpy数组中寻找楼梯状 struct