Python 在pandas中将多索引数据帧分离为多个单索引数据帧

Python 在pandas中将多索引数据帧分离为多个单索引数据帧,python,pandas,numpy,Python,Pandas,Numpy,我有一个描述股票运动的多指数数据框架(OHLC)。索引为日期和符号。数据帧如下所示: open high low close volume date symbol 2017-12-03 07:00:00 4005 38.75 38.75 38.75 38.75 2518 2018-01-04 09:58:00 4333 12.06 12.06 12.06 12.06

我有一个描述股票运动的多指数数据框架(OHLC)。索引为
日期
符号
。数据帧如下所示:

                             open   high    low  close  volume
date                symbol
2017-12-03 07:00:00 4005    38.75  38.75  38.75  38.75    2518
2018-01-04 09:58:00 4333    12.06  12.06  12.06  12.06    2000
2018-01-22 10:06:00 4338     9.22   9.22   9.22   9.22      10
2018-01-22 11:23:00 4338     9.22   9.22   9.22   9.22    1000
2017-12-14 08:41:00 4334     9.28   9.28   9.28   9.28       2
2018-01-02 10:19:00 4332    10.30  10.30  10.30  10.30     100
2018-01-09 08:56:00 4332    10.28  10.30  10.28  10.30    1500
In [1]: df.symbol('4338')
Out[1]:
                      open   high    low  close  volume
date               
2018-01-22 10:06:00   9.22   9.22   9.22   9.22      10
2018-01-22 11:23:00   9.22   9.22   9.22   9.22    1000
有没有一种方法可以通过符号来分隔数据框,从而生成一个以日期为索引的索引数据框?大概是这样的:

                             open   high    low  close  volume
date                symbol
2017-12-03 07:00:00 4005    38.75  38.75  38.75  38.75    2518
2018-01-04 09:58:00 4333    12.06  12.06  12.06  12.06    2000
2018-01-22 10:06:00 4338     9.22   9.22   9.22   9.22      10
2018-01-22 11:23:00 4338     9.22   9.22   9.22   9.22    1000
2017-12-14 08:41:00 4334     9.28   9.28   9.28   9.28       2
2018-01-02 10:19:00 4332    10.30  10.30  10.30  10.30     100
2018-01-09 08:56:00 4332    10.28  10.30  10.28  10.30    1500
In [1]: df.symbol('4338')
Out[1]:
                      open   high    low  close  volume
date               
2018-01-22 10:06:00   9.22   9.22   9.22   9.22      10
2018-01-22 11:23:00   9.22   9.22   9.22   9.22    1000
任何正确方向的指导都将不胜感激。

最简单的是使用:

如果值是数字,请使用:

print (df.xs(4338, level=1))

当我这样做时,我得到了
KeyError
。可能需要
dfs['4338']
更改为
dfs[4338]
-如果值是数值,而不是字符串。在扩展答案后,这项操作非常有效。谢谢我用最简单的解决方案再次更改答案;)