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?