Innym sposobem na usunięcie indeksu jest użycie zrozumienia listy:
df.columns = [col[1] for col in df.columns]
b c
0 1 2
1 3 4
Ta strategia jest również przydatna, jeśli chcesz połączyć nazwy z obu poziomów, jak w poniższym przykładzie, w którym dolny poziom zawiera dwa „y”:
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
Upuszczenie najwyższego poziomu spowoduje pozostawienie dwóch kolumn z indeksem „y”. Można tego uniknąć, łącząc nazwy ze zrozumieniem listy.
df.columns = ['_'.join(col) for col in df.columns]
A_x A_y B_y
0 1 2 8
1 3 4 9
To był problem, który miałem po zrobieniu grupy i zajęło mi trochę czasu znalezienie innego pytania, które go rozwiązało. Dostosowałem to rozwiązanie do konkretnego przypadku.