我的数据框是这样的
bid_ask.head(6)
Out[3]:
close high low open
timestamp direction
2018-08-16 21:00:00 bid 1.27156 1.27189 1.26899 1.27100
ask 1.27177 1.27270 1.27067 1.27210
volume 1254.00000 1254.00000 1254.00000 1254.00000
2018-08-16 22:00:00 bid 1.27131 1.27154 1.27112 1.27152
ask 1.27152 1.27195 1.27138 1.27173
volume 242.00000 242.00000 242.00000 242.00000
我正在尝试对数据帧执行以下操作,以使用pd.IndexSlice添加行,类似于使用简单数据帧索引的情况
bid_ask.loc[pd.IndexSlice[:, 'mid'], :] = 0.5 * bid_ask.loc[pd.IndexSlice[:, ('bid', 'ask')], :].groupby(level="timestamp").sum()
但是,我得到以下错误:
KeyError: 'mid'
它似乎希望“mid”出现在数据帧中,而不是插入它
我可以通过做以下事情来达到预期的效果
for i in bid_ask.index.get_level_values(0):
bid_ask.ix[(i, "mid"), :] = 0.5 * (bid_ask.ix[(i, "bid"), :] +
bid_ask.ix[(i, "ask"), :])
不过,这要花费更长的时间,特别是如果我的数据集很大,因此不受欢迎的话
如何通过切片或其他更快的替代方法实现这一点
使用
MultiIndex
和concat
相关问题 更多 >
编程相关推荐