Verwenden von rolling_apply für ein DataFrame-Objekt

Ich versuche, den volumengewichteten Durchschnittspreis rollierend zu berechnen.

Dazu habe ich eine Funktion vwap, die dies für mich erledigt:

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

Wenn ich versuche, diese Funktion wie gezeigt mit rolling_apply zu verwenden, erhalte ich eine Fehlermeldung:

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'

Der Fehler macht für mich Sinn, weil die Anwendung rolling_apply keine DataSeries oder ein ndarray als Eingabe und keinen DataFrame erfordert. So wie ich es mache.

Gibt es eine Möglichkeit, rolling_apply für einen DataFrame zu verwenden, um mein Problem zu lösen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage