【发布时间】:2019-02-16 11:11:46
【问题描述】:
我的 Multiindex 数据框的结构如下所示:
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)/2 来将“中间”观察值添加到索引的第二级(即 [bid,ask,volume])。
我想要的数据框应该看起来像这样
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
最有效的方法是什么?这可以就地完成吗?
编辑:
打印数据帧的头部以更清楚地查看结构。
`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}}
`
【问题讨论】:
-
我发布了一个答案,因为您是一个新用户,所以很多人发现一些现有的解决方案令人困惑。希望您能看到这个问题与以下stackoverflow.com/a/24918803/4013571 非常相似,我建议您看看您是否也可以遵循该答案
-
从这里的粘贴中找出框架的结构并不容易。请运行
df.head(5).to_dict()并将输出粘贴到您的问题中。
标签: python pandas multi-index