<p>我一直在研究Pandas数据帧,在检索更高级别索引的子级索引时遇到了问题。你知道吗</p>
<p>此图显示了我的数据帧结构:</p>
<p><img src="https://i.stack.imgur.com/XTwPP.png" alt="This image shows my Dataframe structure"/></p>
<p>例如,在上图中,我想检索只存在于“设备+标签”键'-444/0'的“DCSID”索引,它们是'-111111'、'-222222'和'-333333'。你知道吗</p>
<p>我想用<strong><em>测向位置['-444/0'].索引.级别[0]</em></strong>自<strong><em>测向位置['-444/0']</em></strong>返回键'-444/0'的子数据帧,并使用<strong><em>索引.级别[0]</em></strong>检索我以后想要的结果。你知道吗</p>
<p>这是执行<strong><em>测向位置['-444/0']</em></strong>:</p>
<p><img src="https://i.stack.imgur.com/Lsllp.png" alt="This is the result of doing ***df.loc['-444/0']***"/></p>
<p>它不起作用,这是不合逻辑的,因为我认为测向位置['-444/0']</em></strong>返回新的数据帧。你知道吗</p>
<p>不管怎样,我发现测向指数水平[1] </em></strong>相当于<strong><em>测向iloc['-444/0'].索引.级别[0]</em></strong>都返回“DCSID”中所有索引的列表:</p>
<blockquote>
<p>Int64Index([-444444, -333333, -305500, -304445, -301064, -300015, -299069,
-297188, -296241, -295295,
...
-17132, -15622, -14112, -12602, -9596, -8086, -6576,
-5066, -2060, -542],
dtype='int64', name='DCSID', length=120)</p>
</blockquote>
<p>这是我代码的一部分:</p>
<pre class="lang-py prettyprint-override"><code>for i in df.index.levels[0]: #Choose from first level
for j in df.loc[i].index.levels[0]: #Choose from second level going through the i-th first level
for k in df.loc[i, j, slice(None)].index: #Choose from third level going through the j-th second level
#Code here
</code></pre>