使用标签选择multiindex条目

时间:2016-08-22 13:32:55

标签: python pandas

我没有找到如何按标签选择Pandas multiindex对象的任何解释。以下是文档中的示例 (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'])

我们可以从这个例子中看到,multiindex包含一个名为'labels'的条目,由一系列'coordinates'组成,准确表示multiindex的每个条目。我的问题是:如何调用准确指定这些坐标的条目。所以,例如,我想要的是像

s.loc[0,0]

应返回0.469112,

s.loc[0,1]

返回-0.282863,依此类推。 我在文档中的任何地方都找不到这个。

1 个答案:

答案 0 :(得分:0)

您可以同时使用unstackixiloc来实现此目标。

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

会给0.469112