在Python中滚动使用以前的数据

时间:2018-07-18 12:55:41

标签: python pandas apply rolling-computation

我想在python中执行以下操作

基本上我有一个y = 0.5的表

A | B | Result from column A
---
1   2   0.5
---
2   4   0.5*(0.5+ 2)
---
3   5   ...
---
4   4   ...
---

到目前为止,我有一个效率不高的循环,我想要一种矢量化的方式:

X = np.zeros((len(df),))
for i, (_, row) in enumerate(df.iterrows()):
    if i == 0:
        continue
    X[i] = y*(X[i - 1] +  row['A'])

您能在上面帮助我吗

谢谢

1 个答案:

答案 0 :(得分:1)

我的猜测是,您应该使用带有lambda表达式的Pandas滚动方法联接,类似于以下内容:

X = [your_Pandas_Serie]
rolling_window = X.rolling([the_length_of_your_Serie])

rolling_window.apply(lambda x: [your_function])

使用简单的滚动方法(例如mean())熟悉并在实现最终解决方案之前使用lambda表达式。

我在交易软件中使用了相同的流程。