2016-12-25 4 views
1

私はマルチインデックス列で、そのように見えるのデータフレームを持っている:Pythonのパンダ変更インデックスデータフレーム

   TITLE1 TITLE2 TITLE3 
idx1 idx2 val1 val2 val3 
     idx3 va11 val2 val3 
     idx3 va11 val2 val3 
     idx3 va11 val2 val3 
idx2 idx4 val1 val2 val3 
     idx5 va11 val2 val3 
     idx6 va11 val2 val3 
     idx7 va11 val2 val3 

そして、私は2番目のインデックスの値の名前を変更し、それにタイトルを追加したい:

 NEW_TITLE TITLE1 TITLE2 TITLE3 
idx1  new1  val1 val2 val3 
     new3  va11 val2 val3 
     new3  va11 val2 val3 
     new3  va11 val2 val3 
idx2  new4  val1 val2 val3 
     new5  va11 val2 val3 
     new6  va11 val2 val3 
     new7  va11 val2 val3 

マルチインデックスを操作しようとしましたが、動作しませんでした。

ご意見くださいか?ここで

+0

の可能性のある重複した[列のデータフレームにパンダインデックスを変換する方法?](http://stackoverflow.com/questions/20461165/どのように変換する - パンダインデックスのデータフレームの列) – gzc

+0

@ gzc私はマルチインデックスを持っているので、私のためには動作しません – TheDaJon

+0

マルチインデックス変換を含むトップの答えを確認してください。 – gzc

答えて

1

レベルで

In [93]: df 
Out[93]: 
      TITLE1 TITLE2 TITLE3 
A B 
idx1 idx2 val1 val2 val3 
    idx3 va11 val2 val3 
    idx3 va11 val2 val3 
    idx3 va11 val2 val3 
idx2 idx4 val1 val2 val3 
    idx5 va11 val2 val3 
    idx6 va11 val2 val3 
    idx7 va11 val2 val3 

リセットインデックス1

In [94]: dff = df.reset_index(level=1) 

In [95]: dff 
Out[95]: 
     B TITLE1 TITLE2 TITLE3 
A 
idx1 idx2 val1 val2 val3 
idx1 idx3 va11 val2 val3 
idx1 idx3 va11 val2 val3 
idx1 idx3 va11 val2 val3 
idx2 idx4 val1 val2 val3 
idx2 idx5 va11 val2 val3 
idx2 idx6 va11 val2 val3 
idx2 idx7 va11 val2 val3 

一つの方法は、列の値を置き換えます。

In [96]: dff['B'] = dff['B'].str.replace('idx', 'new') 

In [97]: dff 
Out[97]: 
     B TITLE1 TITLE2 TITLE3 
A 
idx1 new2 val1 val2 val3 
idx1 new3 va11 val2 val3 
idx1 new3 va11 val2 val3 
idx1 new3 va11 val2 val3 
idx2 new4 val1 val2 val3 
idx2 new5 va11 val2 val3 
idx2 new6 va11 val2 val3 
idx2 new7 va11 val2 val3 
+0

私のオリジナルのdfでは、私のインデックスにはタイトルがありません。どうすればいいのですか? 'dff ['B']'? – TheDaJon

関連する問題