pandas中对多级索引进行引用的问题

对于如下的DataFrame

df=pd.DataFrame([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],index=[['A','A','B','B'],['X','Y','X','Y']])
print(df)
      0   1   2   3
A X   1   2   3   4
  Y   5   6   7   8
B X   9  10  11  12
  Y  13  14  15  16

使用loc可以引用一级索引为A的切片

print(df.loc['A'])
   0  1  2  3
X  1  2  3  4
Y  5  6  7  8

或者引用一级索引为A、二级索引为X的切片

print(df.loc['A'].loc['X'])
0    1
1    2
2    3
3    4
Name: X, dtype: int64

然后想请问下,是否可以用loc或其他方法直接引用二级索引为X的切片,得到如下结果?

      0   1   2   3
A X   1   2   3   4
B X   9  10  11  12

是的,可以使用如下代码引用二级索引为X的切片:

df.loc[(slice(None), 'X'), :]

输出结果为:

  0   1   2   3
A X 1 2 3 4
B X 9 10 11 12

其中,slice(None)表示对一级索引不做切片,':'表示对所有列做切片,'X'表示对二级索引为X的行做切片。