Если у вас ниже фрейм данных, нам просто нужно сделать stack
s=df.stack(level=0).reset_index()
K L M level_3 X Y
0 k1 l1 m1 A 1 2
1 k1 l1 m1 B 3 4
2 k1 l1 m1 C 5 6
Sample Data
A B C
X Y X Y X Y
K L M
k1 l1 m1 1 2 3 4 5 6
df.to_dict()
{('A', 'X'): {('k1', 'l1', 'm1'): 1}, ('A', 'Y'): {('k1', 'l1', 'm1'): 2}, ('B', 'X'): {('k1', 'l1', 'm1'): 3}, ('B', 'Y'): {('k1', 'l1', 'm1'): 4}, ('C', 'X'): {('k1', 'l1', 'm1'): 5}, ('C', 'Y'): {('k1', 'l1', 'm1'): 6}}