Как добавить уровень столбца в pandas фрейм данных - PullRequest
1 голос
/ 10 февраля 2020

Мне нужен способ добавить уровень столбца в фрейм данных.

     | 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 Ответ

4 голосов
/ 10 февраля 2020

Используйте 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
...