Использование образца кадра данных из pandas docs Вы можете использовать loc
с параметром axis
или срезами или IndexSlice:
Установка:
def mklbl(prefix,n):
return ["%s%s" % (prefix,i) for i in range(n)]
miindex = pd.MultiIndex.from_product([mklbl('A',4),
mklbl('B',2),
mklbl('C',4),
mklbl('D',2)])
micolumns = pd.MultiIndex.from_tuples([('a','foo'),('a','bar'),
('b','foo'),('b','bah')],
names=['lvl0', 'lvl1'])
dfmi = pd.DataFrame(np.arange(len(miindex)*len(micolumns)).reshape((len(miindex),len(micolumns))),
index=miindex,
columns=micolumns).sort_index().sort_index(axis=1)
dfmiT = dfmi.T.copy()
dfmiT
Входной фрейм данных:
A0 ... A3 \
B0 B1 ... B0 B1
C0 C1 C2 C3 C0 ... C3 C0 C1
D0 D1 D0 D1 D0 D1 D0 D1 D0 D1 ... D0 D1 D0 D1 D0
lvl0 lvl1 ...
a bar 1 5 9 13 17 21 25 29 33 37 ... 217 221 225 229 233
foo 0 4 8 12 16 20 24 28 32 36 ... 216 220 224 228 232
b bah 3 7 11 15 19 23 27 31 35 39 ... 219 223 227 231 235
foo 2 6 10 14 18 22 26 30 34 38 ... 218 222 226 230 234
Давайте использовать .loc
с параметром axis
:
dfmiT.loc(axis=1)['A3',:,'C2']
Выход:
A3
B0 B1
C2 C2
D0 D1 D0 D1
lvl0 lvl1
a bar 209 213 241 245
foo 208 212 240 244
b bah 211 215 243 247
foo 210 214 242 246