Ich habe einen Datenrahmen mit 2 Indexstufen:
value
Trial measurement
1 0 13
1 3
2 4
2 0 NaN
1 12
3 0 34
Was ich daraus machen möchte:
Trial measurement value
1 0 13
1 1 3
1 2 4
2 0 NaN
2 1 12
3 0 34
Wie kann ich das am besten machen?
Ich brauche dies, weil ich die Daten wie hier beschrieben aggregieren möchte , aber ich kann meine Spalten nicht so auswählen, wenn sie als Indizes verwendet werden.
.reset_index()
Antworten:
Die reset_index () ist eine Methode , die Panda - Datenrahmen Indexwerte in den Datenrahmen als Spalten übertragen. Die Standardeinstellung für den Parameter ist drop = False (wodurch die Indexwerte als Spalten beibehalten werden).
Alles, was Sie
.reset_index(inplace=True)
nach dem Namen des DataFrame hinzufügen müssen:quelle
df.reset_index(level=[...])
Dies trifft nicht wirklich auf Ihren Fall zu, könnte aber für andere (wie mich vor 5 Minuten) hilfreich sein, dies zu wissen. Wenn jemandes Multindex den gleichen Namen hat:
df.reset_index(inplace=True)
schlägt fehl, da die erstellten Spalten nicht denselben Namen haben können.Dann müssen Sie den Multindex mit umbenennen, um Folgendes
df.index = df.index.set_names(['Trial', 'measurement'])
zu erhalten:Und dann
df.reset_index(inplace=True)
wird wie ein Zauber wirken.Ich bin auf dieses Problem gestoßen, nachdem ich in einer aufgerufenen Datums- / Uhrzeitspalte (kein Index) nach Jahr und Monat gruppiert hatte
live_date
, was bedeutete, dass sowohl Jahr als auch Monat benannt wurdenlive_date
.quelle
Wie in einem Kommentar erwähnt, verwenden Sie: @ cs95, um nur eine Ebene zu löschen:
df.reset_index(level=[...])
Dadurch muss der gewünschte Index nach dem Zurücksetzen nicht neu definiert werden.
quelle