【问题标题】:python pandas melt/pivot on multiple columns in one step [duplicate]python pandas在一个步骤中融化/旋转多列[重复]
【发布时间】:2019-10-20 04:21:57
【问题描述】:

df 有

cola  colb  colc cold cole colf  colg
1      x     y     10   15   20   25     
2      x     y     11   16   27   28
3      x     y     12   14   20   30

想要

cola  colb  colc colD colE
1      x     y     10   20        
1      x     y     15   25   
2      x     y     11   27
2      x     y     16   28
3      x     y     12   20
3      x     y     14   30

希望以 df 为中心(cold 和 cole 变为 colD,colf 和 colg 变为 colE)。 实际上,我有比 cola 和 colb 更多的列(大约 50 列)不会被旋转,只有最后 4 列旋转成 2 列。

尝试过: pd.melt(df_have, id_vars=['cola, colb'], var_name='colD')

但这需要我将所有 50 列添加到 id_vars,并且我只能在多个步骤中创建 colD 和 colE - 寻找更快的解决方案

【问题讨论】:

    标签: python pandas pivot melt


    【解决方案1】:

    rename 列,然后是wide_to_long

    import pandas as pd
    df = df.rename(columns={'cold': 'colD_1', 'cole': 'colD_2', 'colf': 'colE_1', 'colg': 'colE_2'})
    
    df = (pd.wide_to_long(df, i=['cola', 'colb', 'colc'], j='drop',
                          stubnames=['colD', 'colE'], sep='_')
            .reset_index().drop(columns='drop'))
    

    输出:

       cola colb colc  colD  colE
    0     1    x    y    10    20
    1     1    x    y    15    25
    2     2    x    y    11    27
    3     2    x    y    16    28
    4     3    x    y    12    20
    5     3    x    y    14    30
    

    【讨论】:

      猜你喜欢
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      相关资源
      最近更新 更多