Вы можете использовать pd.IndexSlice для интуитивного способа (вдохновленный из этого ответа ). Некоторые примеры (с использованием pandas 0.18.0):
df.sort_index(inplace=True)
idx = pd.IndexSlice
evens = np.arange(2,max(df.index.levels[1])+1,2)
df.loc[idx[['A','B'],evens,True],['III','V']]
Out[]:
III V
Alpha Int Bool
A 2 True -1.041243 -0.561155
B 2 True 0.381918 -0.148990
df.loc[idx[:,evens,:],:]
Out[]:
I II III IV V VI \
Alpha Int Bool
A 2 False 0.791142 0.333383 0.089767 -0.584465 0.295676 -1.323792
True -1.023160 -0.442004 -1.041243 1.613184 -0.561155 0.397923
B 2 False 0.383229 -0.052715 -0.214347 -2.041429 -1.101059 -0.374035
True -0.183386 -0.855367 0.381918 -0.261106 -0.148990 0.621537
VII
Alpha Int Bool
A 2 False 0.717301
True -0.133701
B 2 False 0.166314
True 0.517513