当前位置: 首页 > 面试题库 >

在DataFrame对象上使用rolling_apply

谭志用
2023-03-14
问题内容

我正在尝试滚动计算体积加权平均价格。

为此,我有一个函数vwap可以为我执行此操作,如下所示:

def vwap(bars):
    return ((bars.Close*bars.Volume).sum()/bars.Volume.sum()).round(2)

如图所示,当我尝试将此函数与rolling_apply一起使用时,出现错误:

import pandas.io.data as web
bars = web.DataReader('AAPL','yahoo')
print pandas.rolling_apply(bars,30,vwap)

AttributeError: 'numpy.ndarray' object has no attribute 'Close'

该错误对我来说很有意义,因为rolling_apply不需要DataSeries或ndarray作为输入,也不需要dataFrame。

有没有一种方法可以将rolling_apply应用于DataFrame以解决我的问题?


问题答案:

这不是直接启用的,但是您可以这样做

In [29]: bars
Out[29]: 
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 942 entries, 2010-01-04 00:00:00 to 2013-09-30 00:00:00
Data columns (total 6 columns):
Open         942  non-null values
High         942  non-null values
Low          942  non-null values
Close        942  non-null values
Volume       942  non-null values
Adj Close    942  non-null values
dtypes: float64(5), int64(1)

window=30

In [30]: concat([ (Series(vwap(bars.iloc[i:i+window]),
                      index=[bars.index[i+window]])) for i in xrange(len(df)-window) ])
Out[30]: 
2010-02-17    203.21
2010-02-18    202.95
2010-02-19    202.64
2010-02-22    202.41
2010-02-23    202.19
2010-02-24    201.85
2010-02-25    201.65
2010-02-26    201.50
2010-03-01    201.31
2010-03-02    201.35
2010-03-03    201.42
2010-03-04    201.09
2010-03-05    200.95
2010-03-08    201.50
2010-03-09    202.02
...
2013-09-10    485.94
2013-09-11    487.38
2013-09-12    486.77
2013-09-13    487.23
2013-09-16    487.20
2013-09-17    486.09
2013-09-18    485.52
2013-09-19    485.30
2013-09-20    485.37
2013-09-23    484.87
2013-09-24    485.81
2013-09-25    486.41
2013-09-26    486.07
2013-09-27    485.30
2013-09-30    484.74
Length: 912


 类似资料:
  • 我在Microsoft Windows7上使用的是。我想在一个变量中加载csv文件,以便稍后执行与SQL相关的操作,但无法这样做。我从这个链接引用了公认的答案,但没有用。我按照以下步骤创建对象和对象: 当我尝试时,它会说没有找到df。我尝试了从附加链接加载CSV的databricks解决方案。它下载软件包,但不加载csv文件。那么我怎样才能纠正我的问题呢?提前致谢:)

  • 此pandas python代码生成错误消息, “TypeError:一元~:'float'的操作数类型错误” 我不知道为什么,因为我试图操纵一个str对象

  • 问题内容: 与brnwdrng的问题类似,我正在寻找一种搜索类似于JSON的对象的方法。假设我对象的结构是这样的: 我想获得一个id =“ A”的对象。 我已经尝试过各种方法,例如: 但似乎没有任何效果。 任何人都可以想到一种无需使用“每个”即可根据某些条件检索项目的方法吗? 问题答案: jQuery不适用于普通对象文字。您可以类似的方式使用以下函数来搜索所有“id”(或任何其他属性),而不管其在

  • 我在运行时得到这个nullPointerException: 原因:java.lang.NullPointerException:试图对空对象引用调用虚拟方法“void android.app.actionbar.SetDisplayHomeasUpenabled(boolean)” 来自MainActivity的代码: 出现问题的代码行是: 我使用:style name=“AppTheme”pa

  • 问题内容: 是否可以使用addJavascriptInterface()将JavaScript对象从JavaScript传递到Java?遵循以下原则: 在Java端如何捕获这样的调用?我将接口设置为发送字符串没有问题,但是当我发送对象时,在Java端会收到null。 问题答案: AFAIK 仅适用于基本类型和字符串,因此您不能传递任意Javascript对象。

  • 问题内容: 嗨,我将以下结构嵌套在一个更大的结构中,该结构是通过api调用返回的,但是我无法对这部分进行编码/解码。我遇到的问题是customKey和customValue都是动态的。 我尝试了类似的操作,但是显然不起作用,因为它实际上不是的数组。 问题答案: 由于您将我的答案链接到另一个问题,因此我将扩展该问题以回答您的问题。 事实是,如果您知道要查找的位置,那么所有键在运行时都是已知的: 用法