假设我有一个像这样的长格式数据框
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)
我将其旋转:
df_piv = df.pivot_table(values=['var1','var2'],index=['name','time'], columns='idx',aggfunc=np.sum)
在对透视数据帧中的数据执行了一些操作之后,我希望将其恢复为长格式。 我该怎么办?
我尝试了多种组合的熊猫功能,包括melt
,to_records
,reset_index
,swaplevel
。没有一个能达到预期的结果。
答案 0 :(得分:4)
将DataFrame.stack
与DataFrame.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