#python #pandas
#python #панды
Вопрос:
Я хотел бы отключить фрейм данных с многоиндексными столбцами, но мне трудно получить точный результат, который я хочу. Я поиграл со всеми параметрами pd.melt()
функции, но не смог этого сделать…
Вот какой у меня ввод :
import pandas as pd
indexes = [['TC1', 'TC2'], ['x', 'z', 'Temp']]
data = pd.DataFrame(columns=pd.MultiIndex.from_product(indexes))
data.loc[0,('TC1', 'x')] = 10
data.loc[0,('TC1', 'z')] = 100
data.loc[0,('TC1', 'Temp')] = 250
data.loc[0,('TC2', 'x')] = 20
data.loc[0,('TC2', 'z')] = 200
data.loc[0,('TC2', 'Temp')] = 255
И вот какой результат я хотел бы получить, при этом столбец «Time» является индексом данных
Time TC x z Temp
0 0 TC1 10 100 250
1 0 TC2 20 200 255
Мои реальные данные имеют гораздо больше столбцов вида TCx
.
Есть какие-нибудь подсказки?
Ответ №1:
Попробуйте
data_out = data.stack(level=0).rename_axis(['Time','TC']).reset_index()
Out[87]:
Time TC Temp x z
0 0 TC1 250 10 100
1 0 TC2 255 20 200
Ответ №2:
Как насчет:
data.stack(0).reset_index().rename(
columns={'level_0': 'Time', 'level_1': 'TC'})
Итак, в этом случае .stack()
это то, что вам нужно:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas .DataFrame.stack.html