假设我有一个已排序的多索引数据框:
color food one two
green ham 0.565738 1.545659
eggs -0.974236 -0.070345
red eggs 1.033801 -2.400454
ham -0.785435 0.462060
pork 0.704228 0.523508
...
如何检索与第一级的 Kth值相关联的所有元素。例如,如果K=2
,我们会检索:
red eggs 1.033801 -2.400454
ham -0.785435 0.462060
pork 0.704228 0.523508
更一般地说,多级数据框架iloc
的语法是什么?
请在GitHub上查看此故障单,以获取有关该主题的跟进:"Awkward" Integer-indexing in MultiIndex DataFrames
答案 0 :(得分:3)
The indexing docs非常完整,阅读和试验付出了代价:
按标签选择
In [18]: df.loc[['green']]
Out[18]:
one two
green ham 0.261355 0.182691
eggs 0.243253 -0.360223
[2 rows x 2 columns]
如果需要,可以直接使用iloc索引
In [24]: df.iloc[0:2]
Out[24]:
one two
green ham 0.261355 0.182691
eggs 0.243253 -0.360223
[2 rows x 2 columns]
这将最多为您提供关于level = 0的每个值的第k个(在本例中为2)值
In [35]: df.groupby(level=0).head(2)
Out[35]:
one two
green ham 0.261355 0.182691
eggs 0.243253 -0.360223
red eggs -0.147635 0.555402
ham 1.815182 0.158497
[4 rows x 2 columns]
这是第n个值(k-1);如果一个组没有,那么将返回该密钥
In [36]: df.groupby(level=0).nth(2)
Out[36]:
one two
red pork -0.158261 -0.963434
[1 rows x 2 columns]
In [37]: df.groupby(level=0).nth(1)
Out[37]:
one two
green eggs 0.243253 -0.360223
red ham 1.815182 0.158497
[2 rows x 2 columns]
答案 1 :(得分:2)
假设您正在寻找与第N 级别的 Kth 值相关联的所有行:
df.xs(df.index.levels[N][K], level=N)