Python Pandas更改索引数据帧

时间:2016-12-25 07:59:47

标签: python pandas dataframe

我有一个看起来像这样的数据框,带有一个多索引列:

              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

我想重命名第二个索引的值并为其添加标题:

       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

我试图操纵多索引但它没有用。

请问任何想法?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

使用pd.DataFrame.rename_axis

df.rename_axis([None, 'NEW_TITLE'])

enter image description here