Python Pandas从多索引数据框中的第二个索引访问值

f4h*_*4hy 5 python multi-index pandas

我不太确定多重索引的工作原理,所以我可能只是在这里尝试做错事情。如果我有一个数据框

        Value
A  B         
1  1    5.67
1  2    6.87
1  3    7.23
2  1    8.67
2  2    9.87
2  3    10.23
Run Code Online (Sandbox Code Playgroud)

如果要访问B = 2的元素,该怎么做?df.ix [2]给我A = 2。要获得特定值,似乎是df.ix [(1,2)],但这是B索引的目的,如果您不能直接访问它呢?

And*_*den 6

您可以使用xs

In [11]: df.xs(2, level='B')
Out[11]:
   Value
A
1   6.87
2   9.87
Run Code Online (Sandbox Code Playgroud)

或者:

In [12]: df1.xs(1, level=1)
Out[12]:
   Value
A
1   5.67
2   8.67
Run Code Online (Sandbox Code Playgroud)


LMc*_*LMc 6

作为替代方案,您可以使用df.loc

>>> df.loc[(slice(None),2),:]
     Value
A B       
1 2   6.87
2 2   9.87
Run Code Online (Sandbox Code Playgroud)

元组按顺序访问索引。因此,slice(None)从索引中获取所有值'A',第二个位置限制基于第二级索引,'B'=2在此示例中。指定:您需要所有列,但您也可以在那里对列进行子集设置。