<p>我想指出这个警告<a href="http://pandas.pydata.org/pandas-docs/stable/advanced.html#using-slicers" rel="nofollow">here</a>,因为您在以下两种情况下得到了不同的结果:</p>
<pre><code>In [13]: idx = pd.IndexSlice
</code></pre>
<p>这将在列上选择。因为这与<code>corrvals.loc[:,'Value2']</code>完全相同,例如典型的列选择</p>
<pre><code>In [15]: corrvals.loc[idx[:,'Value2']]
Out[15]:
Time
1 Value1 0.654654
Value2 1.000000
Value3 1.000000
2 Value1 -0.725288
Value2 1.000000
Value3 0.944911
3 Value1 -0.999569
Value2 1.000000
Value3 -0.121560
Name: Value2, dtype: float64
</code></pre>
<p>这将在索引上选择。(注意后面的逗号)。你知道吗</p>
<pre><code>In [16]: corrvals.loc[idx[:,'Value2'],]
Out[16]:
Value1 Value2 Value3
Time
1 Value2 0.654654 1 1.000000
2 Value2 -0.725288 1 0.944911
3 Value2 -0.999569 1 -0.121560
</code></pre>
<p>最后,这里是另一种选择方法,使用<code>.query</code>。<code>ilevel_1</code>是第一级的名字对象(从0开始编号),因为它没有名称。你知道吗</p>
<pre><code>In [18]: corrvals.index.names
Out[18]: FrozenList([u'Time', None])
In [17]: corrvals.query('ilevel_1=="Value2"')
Out[17]:
Value1 Value2 Value3
Time
1 Value2 0.654654 1 1.000000
2 Value2 -0.725288 1 0.944911
3 Value2 -0.999569 1 -0.121560
</code></pre>
<p>可以重命名标高。你知道吗</p>
<pre><code>In [19]: corrvals.index = corrvals.index.set_names(['Time','Values'])
</code></pre>
<p>那么查询就简单了。你知道吗</p>
<pre><code>In [20]: corrvals.query('Values=="Value2"')
Out[20]:
Value1 Value2 Value3
Time Values
1 Value2 0.654654 1 1.000000
2 Value2 -0.725288 1 0.944911
3 Value2 -0.999569 1 -0.121560
</code></pre>