So Benennen Sie Mehrere Spalten auf eine Reset-Index mit Pandas
Ich versuche, herauszufinden, ob es eine Möglichkeit zum umbenennen Pandas Spalten wenn Sie versuchen, den index zurücksetzen. Ich sehe in der Dokumentation, die Sie können verwenden Sie die "name" - parameter legen Sie den Namen der Spalte ein reset index, wenn es nur eine Spalte, aber ich bin neugierig, ob es eine Möglichkeit gibt, dies zu tun für mehrere Spalten.
Beispiel:
df1 = pd.DataFrame({
'A' : ['a1', 'a1', 'a2', 'a3'],
'B' : ['b1', 'b2', 'b3', 'b4'],
'D1' : [1,0,0,0],
'D2' : [0,1,1,0],
'D3' : [0,0,1,1],
})
df1.set_index(['B','A']).stack().reset_index()
Das Ergebnis lässt Sie mit:
Out[82]:
B A level_2 0
0 b1 a1 D1 1
1 b1 a1 D2 0
2 b1 a1 D3 0
3 b2 a1 D1 0
4 b2 a1 D2 1
Könnten Sie tun:
df1.set_index(['B','A']).stack().reset_index(name='my_col')
Werden, um den Namen der letzten Spalte, aber ich Frage mich ob es einen Weg gibt, um den parameter zu verwenden, um den Namen des 'level_2' Spalte als gut.
Das erste, was mir in den Sinn gekommen war, es zu versuchen:
df1.set_index(['B','A']).stack().reset_index(name=['my_col2','my_col'])
Aber das hat nicht funktioniert, also Suche nach einem anderen Weg um. Ich weiß, ich könnte immer nur benennen Sie die Spalten in die nächste Zeile, sondern hatte gehofft, es wäre ein sauberer Weg, es zu tun in einer Zeile.
Dank!
Sam
- Ich glaube nicht, dass es möglich ist, sehen Sie,
reset_index()
im code ist eigentlich pandas.pydata.org/pandas-docs/stable/generated/..., so dass Sie nur eine Spalte. Was Sie tun können, ist legen Sie den Namen der Spalten für den index der Reihe, und dann bleiben Sie als Namen der Spalten der DataFrame
Du musst angemeldet sein, um einen Kommentar abzugeben.
reset_index
ist nicht schlau genug, um dies zu tun, aber wir nutzen könnten Methodenrename_axis
undumbenennen
Namen geben, die index-und Spalten/Reihen vor dem zurücksetzen des index; einmal die Namen sind richtig eingestellt, reset_index wird automatisch konvertieren Sie diese Namen zu den Namen der Spalten im Ergebnis:Hier
rename_axis
gibt, Namen-index, der etwas gleichwertiges zudf.index.names = ...
außer in einem funktionalen Stil;rename
Namen gibt, die Serie Objekt: