リセットインデックスに名前を割り当てることはできますか? 質問する

リセットインデックスに名前を割り当てることはできますか? 質問する

通常、データフレームが変更されると、レベルに応じてreset_index()新しい列に名前indexまたはが割り当てられます。level_i

新しい列に名前を割り当てることは可能ですか?

ベストアンサー1

rename返された df を以下から呼び出すことができますreset_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

おすすめ記事