假设您有一个包含 1000 个收盘价的数据框。您想以compute_var()
滚动方式应用以最近 90 个收盘价命名的风险计算函数(比如 VaR)。你会怎么做?我假设apply()
:
def compute_var(df):
return do_calculations_on(df[-90:])
def compute_rolling_var(self):
self.var = self.closing.apply(compute_var)
问题是.apply
只通过 1 天关闭到 compute_var,而不是数据帧。所以它给出了一个错误。
我发现的唯一可行的解决方案是使用迭代式算法(.iterrow()):我将迭代索引传递给compute_var
并self.closing[:i]
在对最后 90 行执行计算之前裁剪关闭数据帧,然后通过.loc(i) = computer_var_value
.
我怀疑有更好的方法。