将向量传递给Pandas的window参数rolling_mean()

时间:2015-08-18 12:28:55

标签: python pandas

我想计算时间序列的滚动均值,但使用不同窗口大小的列表。

实际上,我可以使用for循环来实现这一点:

def rolling_mean(series, *vals):
    for i in vals:
        m = pd.rolling_mean(series, window=i)
        print (m)

但是我想尝试找到一种可以更好地利用Pandas功能的矢量化方法。最初我会想象这样的事情会很完美:

def rolling_mean(series, *vals):
    df = pd.rolling_mean(series, window=vals)
    print (df)

其中上述方法将返回一个滚动的DataFrame对象,意味着该系列参数的窗口长度不同。不幸的是,rolling_mean()窗口参数只接受整数。我想不出任何其他方法来实现这一目标。

是否有矢量化方法将* vals值传递给rolling_mean()?

1 个答案:

答案 0 :(得分:0)

例如,您想要计算windows = [20, 40, 60, 80, 120, 250]

以上的滚动均值
#create a new dataframe
rolling_means = pd.DataFrame()

windows = [20, 40, 60, 80, 120, 250]
labels = ['20', '40', '60', '80', '120', '250']

for window,label in zip(windows, labels):
    rolling_means[label] = pd.rolling_mean(series, window = window)

这将创建一个数据框,每列都是不同的滚动平均值。

您需要做的就是修剪数据,以便有完整的数据点进行比较:

rolling_means.dropna(how = 'any', inplace=True)