我可以在熊猫中缓存/恢复滚动窗口操作吗?

问题描述

我在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行开始恢复计算,即不重复任何先前已经完成的计算?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)