假设我有一只股票,我有一个minte的价格和数量数据框:
close high low open symbol timestamp tradingDay volume
0 116.02 116.02 116.02 116.02 AAPL 2017-01-03 04:03:00-05:00
2017-01-03 200
1 116.14 116.14 116.14 116.14 AAPL 2017-01-03 04:06:00-05:00
2017-01-03 100
2 116.15 116.24 116.12 116.14 AAPL 2017-01-03 04:07:00-05:00
2017-01-03 1370
3 116.13 116.15 116.13 116.15 AAPL 2017-01-03 04:08:00-05:00
2017-01-03 1100
4 116.15 116.15 116.15 116.15 AAPL 2017-01-03 04:09:00-05:00
2017-01-03 100
(很抱歉格式化)
我想将这些结合到“vwap”(按体积加权的平均价格)中,这似乎很容易:
zoo= foo.groupby('tradingDay').agg( lambda x: x['close'].dot(x['volume'])/np.sum(x.volume))
但结果对象的列数与原始数据帧的列数相同(每列都相同,并且等于所需的vwap价格)。当然,人们可以选择一个随机的列,但这似乎是道德上的不纯和记忆的浪费。我大概错过了一些非常明显的东西,但是什么呢?