397 Stimmen

Pandas: Einen Level aus einem mehrstufigen Spaltenindex entfernen?

Wenn ich einen mehrstufigen Spaltenindex habe:

>>> cols = pd.MultiIndex.from_tuples([("a", "b"), ("a", "c")])
>>> pd.DataFrame([[1,2], [3,4]], columns=cols)

    a
   ---+--
    b | c
--+---+--
0 | 1 | 2
1 | 3 | 4

Wie kann ich die Ebene "a" dieses Index entfernen, um folgendes zu erhalten:

    b | c
--+---+--
0 | 1 | 2
1 | 3 | 4

18voto

sedeh Punkte 6163

Sie könnten das auch erreichen, indem Sie die Spalten umbenennen:

df.columns = ['a', 'b']

Dies erfordert einen manuellen Schritt, könnte aber eine Option sein, insbesondere wenn Sie Ihren Datensatz später umbenennen würden.

8voto

dhFrank Punkte 99

Ich habe mit diesem Problem gekämpft, seit ich nicht weiß, warum meine droplevel() Funktion nicht funktioniert. Arbeiten Sie sich durch mehrere und erfahren Sie, dass 'a' in Ihrer Tabelle der Spaltenname ist und 'b', 'c' die Indizes sind. Tun Sie dies wird helfen

df.columns.name = None
df.reset_index() # machen Sie den Index zum Label

0voto

Amol kale Punkte 1
new_columns_cdnr = []
für spalte in liste(df.spalten):
    neu = [x für x in liste(spalte) if not 'unnamed' in x.lower()]
    new_columns_cdnr.append(neu[-1])
df.spalten = new_columns_cdnr

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X