2016-12-25 52 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 

,我想重命名第二个指标的值并添加一个封号:

 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 

我试图操纵multindex,但它没有工作。

有什么想法吗?

+0

的可能的复制[如何在数据帧大熊猫指数转换成列?(http://stackoverflow.com/questions/20461165/如何转换熊猫索引在一个数据框到列) – gzc

+0

@gzc我有multiindex,所以它不适合我 – 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