Eine andere Möglichkeit, den Index zu löschen, besteht darin, ein Listenverständnis zu verwenden:
df.columns = [col[1] for col in df.columns]
b c
0 1 2
1 3 4
Diese Strategie ist auch nützlich, wenn Sie die Namen beider Ebenen wie im folgenden Beispiel kombinieren möchten, in dem die unterste Ebene zwei Ys enthält:
cols = pd.MultiIndex.from_tuples([("A", "x"), ("A", "y"), ("B", "y")])
df = pd.DataFrame([[1,2, 8 ], [3,4, 9]], columns=cols)
A B
x y y
0 1 2 8
1 3 4 9
Wenn Sie die oberste Ebene löschen, bleiben zwei Spalten mit dem Index 'y' übrig. Dies kann vermieden werden, indem die Namen mit dem Listenverständnis verbunden werden.
df.columns = ['_'.join(col) for col in df.columns]
A_x A_y B_y
0 1 2 8
1 3 4 9
Das ist ein Problem, das ich hatte, nachdem ich einen Groupby gemacht hatte, und es dauerte eine Weile, bis ich diese andere Frage gefunden hatte , die es löste. Ich habe diese Lösung hier an den speziellen Fall angepasst.