首页 > 解决方案 > 枢轴/交叉表/取消堆叠数据框

问题描述

有必要将以下数据分解为数据透视表,而无需进行聚合。鉴于规范化,我正在尝试创建一个旋转数据的表,以便我可以分析每个事件编号的时间。

这是数据框:

|incident|status|time|unit_num|
|123|dispatch|1/19/2019 09:04:59|ambulance1|
|123|enroute|1/19/2019 09:06:59|ambulance1|
|123|onscene|1/19/2019 09:14:59|ambulance1|
|123|available|1/19/2019 09:24:59|ambulance1|
|123|dispatch|1/19/2019 09:04:59|ambulance2|
|123|enroute|1/19/2019 09:08:59|ambulance2|
|123|onscene|1/19/2019 09:13:59|ambulance2|
|123|available|1/19/2019 09:34:59|ambulance2|

我试图通过枢轴/取消堆叠来完成的是以下布局,它没有产生预期的结果

Incident | Unit | Dispatch | Enroute | Onscene | Available
123 | ambulance1 | associated times
123 | ambulance2 | associated times

任何帮助将不胜感激

谢谢你。

标签: pandasdataframepivot-table

解决方案


IIUC,你可以试试:

df = (
    df.pivot_table(
        index=['incident', 'unit_num'],
        columns='status',
        values='time',
        aggfunc=''.join)
    # .add_suffix('_time')
    .rename_axis(columns=None)
    .reset_index()
)

输出:

   incident    unit_num           available            dispatch  \
0       123  ambulance1  1/19/2019 09:24:59  1/19/2019 09:04:59   
1       123  ambulance2  1/19/2019 09:34:59  1/19/2019 09:04:59   

              enroute             onscene  
0  1/19/2019 09:06:59  1/19/2019 09:14:59  
1  1/19/2019 09:08:59  1/19/2019 09:13:59  

推荐阅读