【问题标题】:Python Stack DataframePython 堆栈数据框
【发布时间】:2021-08-07 04:37:56
【问题描述】:

以下是货车、卡车每小时交通量的数据框:

Date Hour Direction Van Truck
2019-02-01 0 EB 1 2
2019-02-01 0 WB 3 4

下面是我想要的表格:

Date Hour Direction Class Count
2019-02-01 0 EB Van 1
2019-02-01 0 EB Truck 2
2019-02-01 0 WB Van 3
2019-02-01 0 WB Truck 4

我尝试了简单的 df.stack() 但失败了,我应该在 stack() 中定义更多吗?

【问题讨论】:

    标签: python pandas dataframe stack


    【解决方案1】:

    set_index 然后stack:

    import pandas as pd
    
    df = pd.DataFrame({
        'Date': {0: '2019-02-01', 1: '2019-02-01'}, 'Hour': {0: 0, 1: 0},
        'Direction': {0: 'EB', 1: 'WB'}, 'Van': {0: 1, 1: 3}, 'Truck': {0: 2, 1: 4}
    })
    
    stacked = df.set_index(['Date', 'Hour', 'Direction']).stack() \
        .reset_index().rename(columns={'level_3': 'Class', 0: 'Count'})
    
    print(stacked)
    

    stacked:

             Date  Hour Direction  Class  Count
    0  2019-02-01     0        EB    Van      1
    1  2019-02-01     0        EB  Truck      2
    2  2019-02-01     0        WB    Van      3
    3  2019-02-01     0        WB  Truck      4
    

    melt:

    melted = df.melt(id_vars=['Date', 'Hour', 'Direction'],
                     var_name='Class',
                     value_name='Count')
    print(melted)
    

    melted:

             Date  Hour Direction  Class  Count
    0  2019-02-01     0        EB    Van      1
    1  2019-02-01     0        WB    Van      3
    2  2019-02-01     0        EB  Truck      2
    3  2019-02-01     0        WB  Truck      4
    

    【讨论】:

    • 谢谢亨利!
    猜你喜欢
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2013-06-10
    • 2021-11-26
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 2018-01-29
    相关资源
    最近更新 更多