Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用截至某一日期的所有历史数据滚动应用函数?_Python_Pandas_Time Series - Fatal编程技术网

Python 如何使用截至某一日期的所有历史数据滚动应用函数?

Python 如何使用截至某一日期的所有历史数据滚动应用函数?,python,pandas,time-series,Python,Pandas,Time Series,我有一个月度时间序列数据框架,并希望使用所有过去的数据进行滚动,例如,我有1990-01-01到2020-01-01的数据。那么我想从1999年12月31日开始做: df = pd.DataFrame() df['1990-01-01':'1999-12-31'].apply(myfun) df['1990-01-01':'2000-01-31'].apply(myfun) df['1990-01-01':'2000-02-29'].apply(myfun) df['1990-01-01':'2

我有一个月度时间序列数据框架,并希望使用所有过去的数据进行滚动,例如,我有1990-01-01到2020-01-01的数据。那么我想从1999年12月31日开始做:

df = pd.DataFrame()
df['1990-01-01':'1999-12-31'].apply(myfun)
df['1990-01-01':'2000-01-31'].apply(myfun)
df['1990-01-01':'2000-02-29'].apply(myfun)
df['1990-01-01':'2000-03-31'].apply(myfun)

我的数据是每月一次的,所以考虑到每个月都是连续的,所以应该更简单。这将如何与滚动工作?我没有找到明确的方法。

滚动功能可以应用于熊猫系列。您可以计算滚动平均值,或您需要的任何其他函数。例如:

import pandas as pd

serie  = pd.Series([1, 2, 0, 0, 1, 2, 0, 0])
serie.rolling(window=3).mean()
输出: 出[19]: 0南 1楠 2 1.000000 3 0.666667 4 0.333333 5 1.000000 6 1.000000 7 0.666667 数据类型:64

它可以与lag和groupby组合用于不同的时间序列计算

在您的示例中,您可以执行以下操作:

df['your_column_with_sales_or_any_values'].rolling(window=3).mean()

您需要为您的问题设置一个方便的窗口

滚动功能可以应用于熊猫系列。您可以计算滚动平均值,或您需要的任何其他函数。例如:

import pandas as pd

serie  = pd.Series([1, 2, 0, 0, 1, 2, 0, 0])
serie.rolling(window=3).mean()
输出: 出[19]: 0南 1楠 2 1.000000 3 0.666667 4 0.333333 5 1.000000 6 1.000000 7 0.666667 数据类型:64

它可以与lag和groupby组合用于不同的时间序列计算

在您的示例中,您可以执行以下操作:

df['your_column_with_sales_or_any_values'].rolling(window=3).mean()

您需要为您的问题设置一个方便的窗口

df.expanding().apply(myfunc)

看起来你在找我

df.expanding().apply(myfunc)