Панды: изменение индексов строк на индексы столбцов. Или наоборот
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