使用pd.melt()取消Pivot多索引数据帧

2024-03-28 13:18:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想取消Pivot一个带有多索引列的数据帧,但我很难得到我想要的确切输出。我使用了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   TC   x    z Temp
0    0  TC1  10  100  250
1    0  TC2  20  200  255

我的真实数据有更多的TCx类列。 有线索吗


Tags: 数据函数importpandasdata参数temploc
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

试试这个

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

相关问题 更多 >