重塑熊猫中的数据框(带日期)

时间:2020-09-10 06:45:32

标签: python pandas

我有一个数据框,我希望将其塑造成所需的方式。 这是我正在处理的数据框的精确副本...

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'])

如您所见,输出根本不是很可读。 有什么建议可以将输出转换成上述格式?

1 个答案:

答案 0 :(得分:1)

DataFrame.swaplevelDataFrame.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