【问题标题】:Pivot/Crosstab/Unstack a Dataframe枢轴/交叉表/取消堆叠数据框
【发布时间】:2021-09-10 03:05:01
【问题描述】:

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

这是数据框:

|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

任何帮助将不胜感激

谢谢。

【问题讨论】:

    标签: pandas dataframe pivot-table


    【解决方案1】:

    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  
    

    【讨论】:

    • 我认为这是正确的语法。问题是应该显示数千行,但只显示了 7 行,事件编号为 0。
    猜你喜欢
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    相关资源
    最近更新 更多