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