vol = df.resample('30s', how={'volume': 'sum'})
vol.columns = pd.MultiIndex.from_tuples([('volume', 'sum')])
vol
price = df.resample('30s', how={'price': 'ohlc'})
pd.concat([price, vol], axis=1)
Передискретизация торговых данных в OHLCV с пандами