【问题标题】:Extract rows as column from pandas data frame after melt融化后从熊猫数据框中提取行作为列
【发布时间】:2016-10-04 11:43:19
【问题描述】:

我正在使用 pandas,我有这张桌子:

ID 1-May-2016 1-Jun-2016 20-Jul-2016 Class
1       0.2       0.52      0.1        H
2       0.525     0.20      0.01       L
...

我想获得这张桌子:

ID  Date        Value  Class
1   1-May-2016    0.2    H
1   1-Jun-2016    0.52   H
...
2   1-May-2016    0.525  L
...

我试过了:

pandas.melt(df,id_vars["ID"], var_name = "Class")

我几乎得到了我想要的:

ID  Class        Value  
1   1-May-2016    0.2   
1   1-Jun-2016    0.52   
...
1   Class         L
2   Class         H

除了表格的底部包含应该被视为“额外”列的信息。 这是正确的过程/方法吗?如果是,我怎样才能将表格的底部“移动”为包含我的样本类别的列?

【问题讨论】:

    标签: python pandas pivot-table melt


    【解决方案1】:

    您需要在melt 中添加Classid_vars

    print (pd.melt(df,id_vars=["ID", 'Class'], var_name = "Date", value_name='Vals'))
       ID Class         Date   Vals
    0   1     H   1-May-2016  0.200
    1   2     L   1-May-2016  0.525
    2   1     H   1-Jun-2016  0.520
    3   2     L   1-Jun-2016  0.200
    4   1     H  20-Jul-2016  0.100
    5   2     L  20-Jul-2016  0.010
    

    然后在必要时使用sort_values

    print (pd.melt(df,id_vars=["ID", 'Class'], var_name = "Date", value_name='Vals')
             .sort_values(['ID', 'Class']))
    
       ID Class         Date   Vals
    0   1     H   1-May-2016  0.200
    2   1     H   1-Jun-2016  0.520
    4   1     H  20-Jul-2016  0.100
    1   2     L   1-May-2016  0.525
    3   2     L   1-Jun-2016  0.200
    5   2     L  20-Jul-2016  0.010
    

    stack 的另一种可能解决方案:

    print (df.set_index(["ID", 'Class'])
             .stack()
             .reset_index(name='Vals')
             .rename(columns={'level_2':'Date'}))
    
       ID Class         Date   Vals
    0   1     H   1-May-2016  0.200
    1   1     H   1-Jun-2016  0.520
    2   1     H  20-Jul-2016  0.100
    3   2     L   1-May-2016  0.525
    4   2     L   1-Jun-2016  0.200
    5   2     L  20-Jul-2016  0.010
    

    【讨论】:

    • 完美!这正是我所需要的。我发现第一个融化的解决方案更简单。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 2018-06-21
    相关资源
    最近更新 更多