【问题标题】:Use previous data in rolling in Python在 Python 中滚动使用以前的数据
【发布时间】:2018-12-26 09:47:12
【问题描述】:

我想在 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'])

你能帮我解决以上问题吗

谢谢

【问题讨论】:

  • 发布你的代码,展示你做了什么
  • 欢迎来到Stack Overflow!,请转至tour,环顾四周,阅读How do I ask a good question?。也像@SreeramTP 所说,你应该分享你尝试过的东西。
  • 感谢您的留言,请在上面找到我的代码,抱歉。谢谢
  • 我不确定你可以在这里矢量化,因为 Xn+1 取决于 Xn 结果。
  • 是的,我需要某种滚动应用,取之前的结果。

标签: python pandas apply rolling-computation


【解决方案1】:

我的猜测是你应该使用 Pandas 滚动方法加入 lambda 表达式,类似于以下内容:

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

rolling_window.apply(lambda x: [your_function])

在实施您的最终解决方案之前,请使用 mean() 等简单的滚动方法来熟悉并使用 lambda 表达式。

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

【讨论】:

  • 当然必须为第一个值添加条件。
  • 但是X在这里是未知的。您需要将 y 和 f 与先前的 Xn 一起应用来计算 Xn+1。你能用滚动功能做到这一点吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 2021-10-26
  • 2020-04-22
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 2018-09-02
相关资源
最近更新 更多