2012-06-29 6 views
9
zu verlieren

Nehmen wir an, ich habe eine DataFrame df mit einem Multiindex und es hat den Pegel L.Hinzufügen von Ebenen zu Multiindex, ohne zu entfernen

Gibt es einen Weg L aus dem Index zu entfernen und wieder hinzufügen?

df = df.index.drop('L') löscht L vollständig aus dem DataFrame (im Gegensatz zu df= df.reset_index(), die ein Drop-Argument hat). könnte ich natürlich df = df.reset_index().set_index(everything_but_L, inplace=True) tun.

Nun nehmen wir an, der Index enthält alles außer L, und ich möchte hinzufügen. df.index.insert(0, df.L) funktioniert nicht. Wieder könnte ich natürlich df= df.reset_index().set_index(everything_including_L, inplace=True) anrufen, aber es fühlt sich nicht richtig an.

Warum brauche ich das? Da Indizes nicht eindeutig sein müssen, kann es vorkommen, dass ich eine neue Spalte hinzufügen möchte, sodass der Index eindeutig wird. Dropping kann in Situationen nützlich sein, in denen nach dem Aufteilen von Daten eine Ebene des Index keine Informationen mehr enthält (sagen wir, mein Index ist A, B und ich operieren auf einem df mit A = x, aber ich möchte A nicht verlieren, was passieren würde mit index.droplevel ('A')).

Antwort

15

In der aktuellen Version (0.17.1) ist es möglich,

df.set_index(column_to_add, append=True, inplace=True) 

und

df.reset_index(level=column_to_remove_from_index). 

Dies geht einher mit einer erheblichen Beschleunigung gegen n Spalten Zurücksetzen und dann Zugabe von n + 1 bis Der Index.

Verwandte Themen