In [7]:
%%time

quote.groupby(by = [quote.Symbol,vaex.BinnerTime(quote.Time,'h')],
              agg = {'mid': vaex.agg.mean('Offer_Price+Bid_Price/2')})
CPU times: user 3min 56s, sys: 1min 15s, total: 5min 11s
Wall time: 4min 28s
Out[7]:
# Symbol Time mid
0 AAPL 2019-10-07 04337.2674748322148
1 AAPL 2019-10-07 05338.94756559766745
2 AAPL 2019-10-07 06331.3351604729725
3 AAPL 2019-10-07 07308.4806178643386
4 AAPL 2019-10-07 08274.89208706786076
... ... ... ...
109,852AZO 2019-10-07 151480.6117140067788
109,853AZO 2019-10-07 161187.8488888888892
109,854AZO 2019-10-07 171446.2275
109,855AZO 2019-10-07 181111.5970000000002
109,856AZO 2019-10-07 191012.5350000000001