使用multiindex从数据透视表中获取原始数据框

时间:2020-01-22 14:37:36

标签: python pandas dataframe

假设我有一个像这样的长格式数据框

data = {'name': ["A","A","A","B","B","B","C","C","C"],
        'time':["1pm","1pm","1pm","2pm","2pm","2pm","3pm","3pm","3pm"],
        'idx': [1,2,3,1,2,3,1,2,3], 'var1':[34,234,645,3,23,65,34,24,25], 
        'var2':[1,35,2,65,2,1,7,3,8]}

df = pd.DataFrame(data)

enter image description here

我将其旋转:

df_piv = df.pivot_table(values=['var1','var2'],index=['name','time'], columns='idx',aggfunc=np.sum)

enter image description here

在对透视数据帧中的数据执行了一些操作之后,我希望将其恢复为长格式。 我该怎么办?

我尝试了多种组合的熊猫功能,包括meltto_recordsreset_indexswaplevel。没有一个能达到预期的结果。

1 个答案:

答案 0 :(得分:4)

DataFrame.stackDataFrame.reset_index一起使用:

df = df_piv.stack().reset_index()
print (df)
  name time  idx  var1  var2
0    A  1pm    1    34     1
1    A  1pm    2   234    35
2    A  1pm    3   645     2
3    B  2pm    1     3    65
4    B  2pm    2    23     2
5    B  2pm    3    65     1
6    C  3pm    1    34     7
7    C  3pm    2    24     3
8    C  3pm    3    25     8
相关问题