Ein weiterer Weg, den Index zu entfernen, besteht darin, eine Listenabstraktion 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 aus beiden Ebenen kombinieren möchten, wie im folgenden Beispiel, bei dem die untere Ebene zwei 'y's 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
Das Entfernen der oberen Ebene würde zwei Spalten mit dem Index 'y' hinterlassen. Dies kann vermieden werden, indem man die Namen mit der Listenabstraktion zusammenfügt.
df.columns = ['_'.join(col) for col in df.columns]
A_x A_y B_y
0 1 2 8
1 3 4 9
Das war ein Problem, das ich nach einem Groupby hatte und es hat eine Weile gedauert, um diese andere Frage zu finden, die es gelöst hat. Ich habe diese Lösung speziell auf diesen Fall angepasst.