python - 我可以在 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 行恢复它,即不重复以前已经完成的任何计算?
解决方案
推荐阅读
- excel - 如何根据第一个和最后一个文件名将100个文件复制到一个文件夹并在列表框vba中显示
- ngxs - 刷新浏览器选项卡后保留状态
- ios - 带有交叉溶解动画的 swift UIPageViewController
- javascript - 我可以根据浏览器的缩放调整图像大小吗?
- mobile - 有没有其他方法可以改变脚手架抽屉的宽度?
- spring-boot - “状态”:403,“错误”:“禁止”,“消息”:“禁止”,“路径”:“/post/create”
- node.js - 从 mysql 安全/验证 Node js-Express Rest api 的方法
- python - 给定一个图(或元图)(但没有 TF 事件文件),如何可视化它
- php - RouteServiceProvider 中的 Laravel 显式路由模型绑定问题
- mysql - Mysql 不同的行 2 列