Использование roll_apply для объекта DataFrame
Я пытаюсь рассчитать средневзвешенную цену по объему.
Для этого у меня есть функция vwap, которая делает это для меня, вот так:
def vwap(bars):
return ((bars.Close*bars.Volume).sum()/bars.Volume.sum()).round(2)
Когда я пытаюсь использовать эту функцию с roll_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 .. как я это делаю.
Есть ли способ использовать roll_apply для DataFrame для решения моей проблемы?