Панды: изменение индексов строк на индексы столбцов. Или наоборот

import pandas as pd
df = pd.DataFrame(data={'start':[1,2,3],'zone':['a','b','c']}); 
df['end']=[4,5,6]
df.set_index('zone',drop=True,inplace=True,append=False)
print(df)

      start  end
zone            
a         1    4
b         2    5
c         3    6

Я хотел бы изменить этот фрейм данных, чтобы он стал:

zone  a              b            c
      start  end     start  end   start  end
      1        4     2      5     3      6

Изменяя индексы строки на индексы столбца. Мне это нужно, потому что я хочу позже расплавить информационный кадр, чтобы он стал длинной таблицей. Но я не знаю, как растопить индекс строки вместе с индексом столбца. Но получение этого вывода позволило бы мне просто использовать:

pd.melt(df)

Чтобы получить длинный стол. Если есть способ изменить индексы столбцов на индексы строк, я мог бы тогда пропустить шаг, на котором я изменил индексы строк на индексы столбцов, и сразу получить длинную таблицу.

Пожалуйста помоги.

2 ответа

Решение

Попробуйте это используя stack,to_frameи T для транспонирования:

df.stack().to_frame().T

Выход:

zone     a         b         c    
     start end start end start end
0        1   4     2   5     3   6

Реконструкция из манипулирования массивами и многоиндексных конструкций.

pd.DataFrame(
    df.values.reshape(1, -1),
    columns=pd.MultiIndex.from_product([df.index, df.columns])
)

      a         b         c    
  start end start end start end
0     1   4     2   5     3   6
Другие вопросы по тегам