2
pandas multiindexを使用してトップレベルのインデックス(日付)で部分スライスを選択し、2番目のレベルのインデックスにリストを適用しようとしています。 (株記号)。私。私はAAPLとMSFTのデータをd1:d2
にしたいと思っています。Pandas MultiIndexでラベルが1つしかない値のリストでインデックスを作成する方法
部分スライスはうまく機能しますが、途中でGOOGを避けながら、2番目のインデックスからAAPLとMSFTの両方を選択する方法が明確ではありません。
レベルを入れ替えると、1つのシンボルで動作しますが、リストでは動作しません。
In [93]: print df
f1 f2 c1
date sym
2012-01-01 AAPL 5. 2 3
GOOG 1. 2 3
MSFT 4. 2 3
2012-01-02 AAPL 8. 2 3
GOOG 6. 2 3
MSFT 7. 2 3
2012-01-03 AAPL 11 2 3
GOOG 9. 2 3
MSFT 10 2 3
In [94]: print df.ix[d1:d2].swaplevel(0,1).ix['AAPL']
f1 f2 c1
date
2012-01-01 5 2 3
2012-01-02 8 2 3
In [95]: print df.ix[d1:d2].swaplevel(0,1).ix[['AAPL', 'MSFT']]
<blah balh>
TypeError: Expected tuple, got str
私は長いタプルリストすなわちの構築を避けたい:IXに渡されたときに作業を行い
t = [(d1, 'AAPL'), (d1, 'MSFT'), (d2, 'AAPL'), (d2, 'MSFT')]
。以下は私が望む出力です。
In [103]: print df.ix[t]
f1 f2 c1
date sym
2012-01-01 AAPL 5 2 3
MSFT 4 2 3
2012-01-02 AAPL 8 2 3
MSFT 7 2 3
おかげで、 ジョン
ありがとう、私はパンダ7.0を使用していた、これは7.2で動作します。 –
はいこれは0.7.0から0.7.2の間で実装されています。 –