2016-12-01 50 views

回答

4

您可以在返回的DF调用renamereset_index

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 

设置索引名

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 

呼叫reset_index和链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 

感谢@ ayhan

或者你可以使用rename_axis到索引之前reset_index重命名:

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 

或只是简单地覆盖索引名直接第一:

df.index.name = 'bar' 

,然后调用reset_index

+0

完美,谢谢。 –

+0

在使用[rename_axis](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.rename_axis.html)的新版本中,重置索引也是一个选项。 – ayhan

+1

@ayhan true但我想OP想知道是否可以重新命名reset_index的结果而不是在重置之前重命名索引,我会更新并添加,虽然,谢谢 – EdChum

相关问题