2016-04-09 5 views
2

私は以下のマルチインデックス時系列データを持っています。pandas xs関数のマルチカラム選択が失敗しました

first    001            \ 
second    open  high  low close jdiff_vol value 
date  time               
20150721 90100 2082.18 2082.18 2082.18 2082.18  11970 99466 
     90200 2082.72 2083.01 2082.18 2083.01  4886 40108 
     90300 2083.68 2084.20 2083.68 2083.98  6966 48847 
     90400 2083.63 2084.21 2083.63 2084.00  6817 48020 
     90500 2084.03 2084.71 2083.91 2084.32  10193 58399 
20150721 90100 2084.14 2084.22 2083.59 2083.65  7860 39128 
     90200 2084.08 2084.08 2083.47 2083.50  7171 39147 
     90300 2083.25 2083.65 2083.08 2083.60  4549 34373 
     90400 2084.06 2084.06 2083.66 2083.80  6980 38088 
     90500 2083.61 2084.04 2083.27 2083.89  5292 33466 

以下のコードが動作します。

opens = data.xs('open', level='second', axis=1, drop_level=True) 

ただし、以下のコードを使用して複数の列を選択することはできません。

opens = data.xs(('open','close'), level='second', axis=1, drop_level=True) 

マルチカラムを選択するにはどうすれば変更できますか?

+0

あなたは 'コンマが欠落しているように見える=のdata.xs()、(「オープン」「近い」、レベルを開き、 = 'second'、axis = 1、drop_level = True) 'これはタイプミスですか?あなたのコメントのために@EdChumありがとう – EdChum

+0

私はタイプミスを修正しました。 – user1913171

答えて

0

xsを持つfindの解決策はありません。

しかし、もしあなたがlocを使用することができますが、最初はsort_indexにより、必要なソート列です:

data = data.sort_index(axis=1) 

print data.loc[:,(slice(None),('open','close'))] 
first    001   
second   close  open 
date  time     
20150721 90100 2082.18 2082.18 
     90200 2083.01 2082.72 
     90300 2083.98 2083.68 
     90400 2084.00 2083.63 
     90500 2084.32 2084.03 
     90100 2083.65 2084.14 
     90200 2083.50 2084.08 
     90300 2083.60 2083.25 
     90400 2083.80 2084.06 
     90500 2083.89 2083.61 
関連する問題