如何向熊猫数据框添加列级别

时间:2020-02-10 15:15:34

标签: python pandas multi-index

我需要一种将列级别添加到数据框的方法。

     | A | B | C | A | B | C |  
date 
2018   0   1   2   1   3   2

这就是我想要做的:

      |  ticker 1 |  ticker 2 |
      | A | B | C | A | B | C |  
date 
2018   0   1   2   1   3   2

1 个答案:

答案 0 :(得分:4)

使用GroupBy.cumcount来计算重复项,并将转换后的列按Index.to_series进行序列化,添加前缀并最后分配给MultiIndex in columns

df = pd.DataFrame({
        'A':list('abcdef'),
         'B':[4,5,4,5,5,4],
         'C':[7,8,9,4,2,3],
         'D':[1,3,5,7,1,0],
         'E':[5,3,6,9,2,4],
         'F':list('aaabbb')

})
df.columns= list('ABCABC')
print (df)
   A  B  C  A  B  C
0  a  4  7  1  5  a
1  b  5  8  3  3  a
2  c  4  9  5  6  a
3  d  5  4  7  9  b
4  e  5  2  1  2  b
5  f  4  3  0  4  b

s = df.columns.to_series()
df.columns = ['ticker ' + s.groupby(s).cumcount().add(1).astype(str), s]
print (df)
  ticker 1       ticker 2      
         A  B  C        A  B  C
0        a  4  7        1  5  a
1        b  5  8        3  3  a
2        c  4  9        5  6  a
3        d  5  4        7  9  b
4        e  5  2        1  2  b
5        f  4  3        0  4  b