2016-12-01 3 views
2

Wenn ein Datenrahmen einen reset_index() durchläuft, erhält die neue Spalte normalerweise den Namen index oder level_i, abhängig von der Ebene.Kann ich einem Reset-Index einen Namen zuweisen?

Ist es möglich, der neuen Spalte einen Namen zuzuweisen?

+0

du würdest muss 'df.reset_index() tun. umbenennen (columns = {df.index.name:'foo '})' – EdChum

Antwort

4

Sie können rename auf dem zurück df von reset_index nennen:

In [145]: 
# create a df 
df = pd.DataFrame(np.random.randn(5,3)) 
df 

Out[145]: 
      0   1   2 
0 -2.845811 -0.182439 -0.526785 
1 -0.112547 0.661461 0.558452 
2 0.587060 -1.232262 -0.997973 
3 -1.009378 -0.062442 0.125875 
4 -1.129376 3.282447 -0.403731 

der Indexname Set

In [146]:  
df.index = df.index.set_names(['foo']) 
df 

Out[146]: 
      0   1   2 
foo        
0 -2.845811 -0.182439 -0.526785 
1 -0.112547 0.661461 0.558452 
2 0.587060 -1.232262 -0.997973 
3 -1.009378 -0.062442 0.125875 
4 -1.129376 3.282447 -0.403731 

Anruf reset_index und Kette mit rename:

In [147]: 
df.reset_index().rename(columns={df.index.name:'bar'}) 

Out[147]: 
    bar   0   1   2 
0 0 -2.845811 -0.182439 -0.526785 
1 1 -0.112547 0.661461 0.558452 
2 2 0.587060 -1.232262 -0.997973 
3 3 -1.009378 -0.062442 0.125875 
4 4 -1.129376 3.282447 -0.403731 

Dank @ ayhan

alternativ können Sie rename_axis verwenden Sie den Index vor reset_index umbenennen:

In [149]: 
df.rename_axis('bar').reset_index() 

Out[149]: 
    bar   0   1   2 
0 0 -2.845811 -0.182439 -0.526785 
1 1 -0.112547 0.661461 0.558452 
2 2 0.587060 -1.232262 -0.997973 
3 3 -1.009378 -0.062442 0.125875 
4 4 -1.129376 3.282447 -0.403731 

oder einfach überschreiben den Index direkt Name zuerst:

df.index.name = 'bar' 

und rufen dann reset_index

+0

Perfekt, danke. –

+0

In neueren Versionen mit [rename_axis] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.rename_axis.html) und dem Zurücksetzen des Index ist auch eine Option. – ayhan

+1

@ayhan wahr, aber ich dachte, die OP wollte wissen, ob es möglich war, das Ergebnis von 'reset_index' umzubenennen, anstatt den Index vor dem Zurücksetzen umzubenennen, ich werde das aktualisieren und hinzufügen, aber danke – EdChum

Verwandte Themen