我目前正在尝试按位置切片三个级别的MuliIndex DataFrame。 我正在使用熊猫19.1
body {
background: #535686;
font-size: 22px
}
a {
text-decoration: none
}
#learnmore,
#learnmore:link,
#learnmore:visited,
#learnmore:active {
padding: 10px;
border: 2px solid white;
color: white;
}
#learnmore {
margin: 10px;
}
#learnmore:hover {
background: white;
color: #535686
}
目前我可以实现:
<div id="offer">
<img src="imgs/detroit.jpeg" title="" alt="">
<h1>Offer Header</h1>
<p>Here is a little bit of information about our offer.</p>
<a href="" id="learnmore">Learn More</a>
<a href="" id="scrolldown"></a>
</div>
但在实践中,我不知道标签会是什么。我只想选择前十级0,所以我尝试了这个(以及许多其他类似的东西):
Level0 Level1 Level2 Value
03-00368 A Item111 6.9
03-00368 A Item333 19.2
03-00368 B Item111 9.7
03-00368 B Item222 17.4
04-00176 C Item110 17.4
04-00176 C Item111 9.7
04-00246 D Item46 12.5
04-00246 D Item66 5.6
04-00246 D Item99 11.2
04-00247 E Item23 12.5
04-00247 E Item24 5.6
04-00247 E Item111 11.2
04-00247 F Item23 7.9
04-00247 F Item24 9.7
04-00247 F Item111 12.5
04-00247 G Item46 11.2
04-00247 G Item66 9.7
04-00247 G Item999 9.7
04-00247 H Item23 11.2
04-00247 H Item94 7.9
04-00247 H Item111 11.2
04-00247 I Item46 5.6
04-00247 I Item66 12.5
04-00247 I Item888 11.2
04-00353 J Item66 12.5
04-00353 J Item99 12.5
04-00354 K Item43 12.5
04-00354 K Item94 12.5
04-00355 L Item54 50
04-00355 L Item99 50
最终目标是限制显示的最终行数,而不会破坏Level0索引
df.loc[(slice('03-00368', '04-00361'), slice(None), slice(None)), :]
请注意,它只返回前两行,我希望结果为:
>>> df.iloc[(slice(0, 10), slice(None), slice(None)), :]
TypeError: unorderable types: int() >= NoneType()
有很多方法可以实现这个目的,但是我发帖是因为我想知道我做错了什么,或者为什么我不能期望能够以这种方式切割MultiIndexes。
答案 0 :(得分:4)
方法1
groupby
+ head
df.groupby(level=0).head(10)
方法2
不必要的冗长
IndexSlice
df.sort_index().loc[pd.IndexSlice[df.index.levels[0][:10], :, :], :]
方法3
loc
df.loc[df.index.levels[0][:10].tolist()]
答案 1 :(得分:1)
你可以组合级别并以这种方式取得前两名
df.groupby(level=0).head(2)