将多个数据帧分组为一个,一列作为同名,另一列作为索引?

时间:2018-02-12 20:11:14

标签: python-3.x pandas

我有一个数据框列表,每个数据框的格式如下:

           id                 time      prob
392  13619782  2018-02-11 21:30:42  0.149796
393  12926892  2018-02-11 21:30:42  0.025866
394  12585081  2018-02-11 21:30:42  0.031470
395  10445552  2018-02-11 21:30:42  0.511263
396    360761  2018-02-11 21:30:42  0.030153
397  17162003  2018-02-11 21:30:42  0.068670
398  11387266  2018-02-11 21:30:42  0.182782

时间列在每个数据帧中不变,id列是从数据帧到数据帧的相同列表,即下一个数据帧如下所示:

           id                 time      prob
413  13619782  2018-02-11 21:30:57  0.171445
414  12926892  2018-02-11 21:30:57  0.024932
415  12585081  2018-02-11 21:30:57  0.030125
416  10445552  2018-02-11 21:30:57  0.504263
417    360761  2018-02-11 21:30:57  0.027320
418  17162003  2018-02-11 21:30:57  0.062276
419  11387266  2018-02-11 21:30:57  0.179639

我想要的是一个新的数据帧,其中每个数据帧代表一行,其唯一的时间值作为行的索引,id列的值作为列名。例如:

               time  13619782  12585081  12585081  10445552    360761  17162003  11387266
2018-02-11 21:30:42  0.149796  0.025866  0.031470  0.511263  0.030153  0.068670  0.182782
2018-02-11 21:30:57  0.171445  0.024932  0.030125  0.504263  0.027320  0.062276  0.179639

我在发布之前确实搜索过类似的问题,但找不到任何内容,但如果之前有人问过/已经回答,我很抱歉。我对熊猫/数据分析比较陌生,甚至不确定这个程序会被调用,所以除了“分组/合并数据帧”之外,不确定使用哪些搜索术语。

1 个答案:

答案 0 :(得分:1)

将两个数据框(假设pivotdf1)与df2合并后,您可以尝试appenddetails):

result_df = df1.append(df2, ignore_index=True).pivot(index='time', columns='id', values='prob')
result_df

输出:

id                   360761    10445552  11387266  12585081  12926892  \
time                                                                    
2018-02-11 21:30:42  0.030153  0.511263  0.182782  0.031470  0.025866   
2018-02-11 21:30:57  0.027320  0.504263  0.179639  0.030125  0.024932   

id                   13619782  17162003  
time                                     
2018-02-11 21:30:42  0.149796  0.068670  
2018-02-11 21:30:57  0.171445  0.062276