我没有找到如何按标签选择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,依此类推。 我在文档中的任何地方都找不到这个。
答案 0 :(得分:0)
您可以同时使用unstack
和ix
或iloc
来实现此目标。
s.unstack().ix[0, 0] # or s.unstack().iloc[0, 0]
会给0.469112