从DataFrame中选择一个多键横截面 [英] Select a multiple-key cross section from a DataFrame

查看:72
本文介绍了从DataFrame中选择一个多键横截面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有(时间,行情指示器)Multiindex和bid/ask/etc数据列的Dataframe"df":

I have a DataFrame "df" with (time,ticker) Multiindex and bid/ask/etc data columns:



                          tod    last     bid      ask      volume
    time        ticker                  
    2013-02-01  SPY       1600   149.70   150.14   150.17   1300
                SLV       1600   30.44    30.38    30.43    3892
                GLD       1600   161.20   161.19   161.21   3860

我想使用多个键选择第二级(level = 1)横截面.现在,我可以使用一个键进行操作,即

I would like to select a second-level (level=1) cross section using multiple keys. Right now, I can do it using one key, i.e.



    df.xs('SPY', level=1)

这给了我一个SPY的时间序列.选择多键横截面(即SPY和GLD的组合横截面)的最佳方法是什么,例如:

which gives me a timeseries of SPY. What is the best way to select a multi-key cross section, i.e. a combined cross-section of both SPY and GLD, something like:



    df.xs(['SPY', 'GLD'], level=1)

?

推荐答案

转换为面板,然后直接建立索引

Convert to a panel, then indexing is direct

In [20]: df = pd.DataFrame(dict(time = pd.Timestamp('20130102'), 
                                A = np.random.rand(3), 
                 ticker=['SPY','SLV','GLD'])).set_index(['time','ticker'])

In [21]: df
Out[21]: 
                          A
time       ticker          
2013-01-02 SPY     0.347209
           SLV     0.034832
           GLD     0.280951

In [22]: p = df.to_panel()

In [23]: p
Out[23]: 
<class 'pandas.core.panel.Panel'>
Dimensions: 1 (items) x 1 (major_axis) x 3 (minor_axis)
Items axis: A to A
Major_axis axis: 2013-01-02 00:00:00 to 2013-01-02 00:00:00
Minor_axis axis: GLD to SPY

In [24]: p.ix[:,:,['SPY','GLD']]
Out[24]: 
<class 'pandas.core.panel.Panel'>
Dimensions: 1 (items) x 1 (major_axis) x 2 (minor_axis)
Items axis: A to A
Major_axis axis: 2013-01-02 00:00:00 to 2013-01-02 00:00:00
Minor_axis axis: SPY to GLD

这篇关于从DataFrame中选择一个多键横截面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆