对于如下的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的行做切片。