Python 检索数据库中数据帧横截面的索引

Python 检索数据库中数据帧横截面的索引,python,pandas,Python,Pandas,假设我们有一个多索引数据帧df,如下所示: | | | one | two | A | B |-------|------- |----|----|-------|------- | x | p | 1 | 2 | x | q | 3 | 4 | y | p | 5 | 6 | y | q | 7 | 8 idx = df[df['one'] > 4].index 现在,我可以得到标准one>4的

假设我们有一个多索引数据帧
df
,如下所示:

|    |    |  one  |  two  
|  A |  B |-------|-------
|----|----|-------|-------
|  x |  p |   1   |   2
|  x |  q |   3   |   4
|  y |  p |   5   |   6
|  y |  q |   7   |   8
idx = df[df['one'] > 4].index
现在,我可以得到标准
one>4
的横截面索引,如下所示:

|    |    |  one  |  two  
|  A |  B |-------|-------
|----|----|-------|-------
|  x |  p |   1   |   2
|  x |  q |   3   |   4
|  y |  p |   5   |   6
|  y |  q |   7   |   8
idx = df[df['one'] > 4].index
然后,将其与
.ix
一起使用:

df.ix[idx]
生成帧的切片:

|    |    |  one  |  two  
|  A |  B |-------|-------
|----|----|-------|-------
|  y |  p |   5   |   6
|  y |  q |   7   |   8
现在,我想做同样的事情,但是在多索引上有一个一级的横截面。
.xs
在以下方面很有用:

df.xs('p', level='B')
返回:

|    |  one  |  two  
|  A |-------|-------
|----|-------|-------
|  x |   1   |   2
|  y |   5   |   6
但此数据帧具有不同的索引结构,其索引不是
df
索引的一部分

因此,我的问题是,应该用什么来代替
idx
,这样下面的表达式

df.ix[idx]
屈服

|    |    |  one  |  two  
|  A |  B |-------|-------
|----|----|-------|-------
|  x |  p |   1   |   2
|  y |  p |   5   |   6

您需要使用参数
drop\u level
并将其设置为
False
,以保持索引:

In [9]: df.xs('p', level='B', drop_level=False)
Out[9]: 
     one  two
A B          
x p    1    2
y p    5    6