2016-08-22 2 views
1

ラベルでPandasマルチインデックスオブジェクトを選択する方法についての説明はありません。ここでは、マルチインデックスが正確の各エントリを示し、「座標」の配列からなる、「ラベル」というエントリが含まれていることをこの例から見ることができる文書 (http://pandas.pydata.org/pandas-docs/stable/advanced.htmlラベルを使用したマルチインデックスエントリの選択

In [1]: arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], 
    ...:   ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']] 
    ...: 

In [2]: tuples = list(zip(*arrays)) 

In [4]: index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) 

In [7]: s = pd.Series(np.random.randn(8), index=index) 
Out[7]: 
first second 
bar one  0.469112 
     two  -0.282863 
baz one  -1.509059 
     two  -1.135632 
foo one  1.212112 
     two  -0.173215 
qux one  0.119209 
     two  -1.044236 
dtype: float64 

In [5]: s.index 
Out[5]: 
MultiIndex(levels=[[u'bar', u'baz', u'foo', u'qux'], [u'one', u'two']], 
      labels=[[0, 0, 1, 1, 2, 2, 3, 3], [0, 1, 0, 1, 0, 1, 0, 1]], 
      names=[u'first', u'second']) 

の例でありますマルチインデックス。私の質問です:どのようにこれらの座標を正確に指定するエントリを呼び出すことができます。だから、例えば、私が欲しいのように0.469112、

s.loc[0,1] 

戻り-0.282863とを返す必要があります

s.loc[0,0] 

のようなものです。 これはドキュメントのどこにでも記載されていません。

答えて

0

これを実現するには、unstackixまたはilocを一緒に使用できます。

s.unstack().ix[0, 0] # or s.unstack().iloc[0, 0] 

0.469112

+0

[OK]を与えるだろう、私はこれが私の具体的な質問に答えることがわかります。しかし問題は、私の実際の問題では、マルチスタックのレイヤーが増えているのに対して、アンスタックは1つのレベルでしか機能しないということです。 Pandasがインデックスに明示的に 'ラベル'を提供している場合、それを使用する方法はないのでしょうか? – user56643

+0

その場合、私は 's [index.levels [0] [0]、index.levels [1] [0]]'を使用すると思います。 これはあなたが探しているものではないかもしれないが、これは私が考えることができる最も近いものです。 –

関連する問題