Pandas превратить уровень1 индекса в уровень 0 столбца - PullRequest
2 голосов
/ 03 февраля 2020

Я нигде не мог найти решение, поэтому спрашиваю здесь.

У меня есть фрейм данных, который выглядит следующим образом. Здесь A и B - индексы MultiIndex, а C, D - заголовки столбцов.

A   B   C   D
a1  b1  0   4
a1  b2  1   5

Как переключить 1-й уровень индекса, чтобы сделать его 0-м уровнем столбцы, так что я получаю что-то вроде этого -

A/B        
          b1            b2
      C        D     C      D
a1    0        4     1      5

Это похоже на простую операцию над кадром данных, но я не могу ничего найти.

1 Ответ

2 голосов
/ 03 февраля 2020

Используйте DataFrame.unstack, но затем необходимо изменить MultiIndex на DataFrame.swaplevel и DataFrame.sort_index:

df = df.unstack().swaplevel(1,0, axis=1).sort_index(axis=1)
print (df)
B  b1    b2   
    C  D  C  D
A             
a1  0  4  1  5

Или решение от @piRSquared:

df = df.stack().unstack(0).T
...