我有一个数据框,我希望将其塑造成所需的方式。 这是我正在处理的数据框的精确副本...
stack_overflow = pd.DataFrame({'id': ['a1','a1','a1','a2','a2','a2','a3','a3','a3'],
'value': [10,20,0,33,64,21,87,55,4],
'schedule': [22,11,44,55,7,5,3,2,4],
'Date':['2020-09-13','2020-09-13','2020-09-13','2020-09-14','2020-09-14','2020-09-14',
'2020-09-15','2020-09-15','2020-09-15']})
我正在寻求使其成为这种格式
2020-09-13 2020-09-14 2020-09-15
Schedule Value Schedule Value Schedule Value
a1 22 10 55 33 3 87
a2 11 20 7 64 2 55
a3 44 0 5 21 4 4
我不是数据专家,所以这是我的发展目标。
pivot_table = pd.pivot_table(stack_overflow,values = ['schedule','value'],index = ['id'],columns = ['Date'])
如您所见,输出根本不是很可读。 有什么建议可以将输出转换成上述格式?
答案 0 :(得分:1)
将DataFrame.swaplevel
与DataFrame.sort_index
一起使用:
pivot_table = (pd.pivot_table(stack_overflow,values = ['schedule','value'],
index = ['id'],
columns = ['Date'])
.swaplevel(1,0, axis=1)
.sort_index(axis=1))
print (pivot_table)
Date 2020-09-13 2020-09-14 2020-09-15
schedule value schedule value schedule value
id
a1 25.666667 10.0 NaN NaN NaN NaN
a2 NaN NaN 22.333333 39.333333 NaN NaN
a3 NaN NaN NaN NaN 3.0 48.666667