首页 > 解决方案 > 我可以在 Pandas 中缓存/恢复滚动窗口操作吗?

问题描述

我在 DataFrame 上执行了 pd.Series.rolling() 操作。

这是一个最小的例子:

import random
import pandas as pd

def rnd_walk(n):
    x = 0
    for i in range(n):
        r = random.random()
        if r > 0.5:
            x =+ random.random()
        else:
            x -= random.random()
        yield x

df = pd.DataFrame({'DATA':list(rnd_walk(100))})

df['SMA_7'] = df.DATA.rolling(window=7).mean()


df.tail(10)
    DATA    SMA_7
90  0.143081    0.204043
91  -0.624594   0.231501
92  0.457923    0.275728
93  0.210151    0.223075
94  0.234321    0.163321
95  -0.218407   0.128217
96  -0.978240   -0.110824
97  0.045524    -0.124760
98  0.151820    -0.013844
99  0.036074    -0.074108

之后,我需要向 DataFrame 添加一些额外的行。

df = df.append(pd.DataFrame({'DATA':list(rnd_walk(5))})).reset_index(drop=True)
df.tail(10)
    DATA    SMA_7
95  -0.218407   0.128217
96  -0.978240   -0.110824
97  0.045524    -0.124760
98  0.151820    -0.013844
99  0.036074    -0.074108
100 -0.089913   NaN
101 0.518280    NaN
102 0.205221    NaN
103 0.101302    NaN
104 0.309708    NaN

我现在的问题是,如何在SMA_7不重复整个 DataFrame 的计算的情况下计算最后添加的值的唯一值?有没有一种通用的方法来缓存计算并从第 99 行恢复它,即不重复以前已经完成的任何计算?

标签: pythonpandasrolling-computation

解决方案


推荐阅读