Структура моего мультииндексного фрейма данных выглядит следующим образом:
close high low open
index = (timestamp,key)
(2018-09-10 16:00:00, ask) 1.16023 1.16064 1.16007 1.16046
(2018-09-10 16:00:00, bid) 1.16009 1.16053 1.15992 1.16033
(2018-09-10 16:00:00, volume) 817.00000 817.00000 817.00000 817.00000
Для каждой временной отметки есть замечания по ставке, аск и объему.
Я пытаюсь добавить ко второму уровню индекса (т. Е. [Bid, ask, volume]) "среднее" наблюдение путем вычисления соответствующего (bid + ask) /2.
.
Мой желаемый фрейм данных должен выглядеть следующим образом
close high low open
index = (timestamp,key)
(2018-09-10 16:00:00, ask) 1.16023 1.16064 1.16007 1.16046
(2018-09-10 16:00:00, bid) 1.16009 1.16053 1.15992 1.16033
(2018-09-10 16:00:00, volume) 817.00000 817.00000 817.00000 817.00000
(2018-09-10 16:00:00, mid) 1.16016 1.16059 1.15999 1.1604
Какой самый эффективный способ сделать это? Можно ли это сделать на месте?
EDIT:
Распечатка заголовка кадра, чтобы более четко видеть структуру.
`bid_ask.head(5).to_dict()
Out[3]:
{'close': {(Timestamp('2018-09-10 16:00:00'), 'ask'): 1.1602300000000001,
(Timestamp('2018-09-10 16:00:00'), 'bid'): 1.1600900000000001,
(Timestamp('2018-09-10 16:00:00'), 'volume'): 817.0,
(Timestamp('2018-09-10 17:00:00'), 'ask'): 1.15977,
(Timestamp('2018-09-10 17:00:00'), 'bid'): 1.15968},
'high': {(Timestamp('2018-09-10 16:00:00'), 'ask'): 1.1606399999999999,
(Timestamp('2018-09-10 16:00:00'), 'bid'): 1.1605300000000001,
(Timestamp('2018-09-10 16:00:00'), 'volume'): 817.0,
(Timestamp('2018-09-10 17:00:00'), 'ask'): 1.16039,
(Timestamp('2018-09-10 17:00:00'), 'bid'): 1.16029},
'low': {(Timestamp('2018-09-10 16:00:00'), 'ask'): 1.1600699999999999,
(Timestamp('2018-09-10 16:00:00'), 'bid'): 1.1599200000000001,
(Timestamp('2018-09-10 16:00:00'), 'volume'): 817.0,
(Timestamp('2018-09-10 17:00:00'), 'ask'): 1.1596200000000001,
(Timestamp('2018-09-10 17:00:00'), 'bid'): 1.1595299999999999},
'open': {(Timestamp('2018-09-10 16:00:00'), 'ask'): 1.16046,
(Timestamp('2018-09-10 16:00:00'), 'bid'): 1.1603300000000001,
(Timestamp('2018-09-10 16:00:00'), 'volume'): 817.0,
(Timestamp('2018-09-10 17:00:00'), 'ask'): 1.1601900000000001,
(Timestamp('2018-09-10 17:00:00'), 'bid'): 1.1600999999999999}}
`