Simultaneously melt multiple columns in Python Pandas

后端 未结 1 808
灰色年华
灰色年华 2020-12-17 06:33

wondering if pd.melt supports melting multiple columns. I have the below examples trying to have the value_vars as list of lists but i am getting an error:

Val

相关标签:
1条回答
  • 2020-12-17 07:06

    Use double melt for each catogories and then concat, but because duplicted values add cumcount for unique triples in MultiIndex:

    df1 = df.melt(id_vars=['City', 'State'], 
                  value_vars=['Mango', 'Orange', 'Watermelon'],
                  var_name='Fruit', value_name='Pounds')
    df2 = df.melt(id_vars=['City', 'State'], 
                  value_vars=['Gin', 'Vodka'], 
                  var_name='Drink', value_name='Ounces')
    
    df1 = df1.set_index(['City', 'State', df1.groupby(['City', 'State']).cumcount()])
    df2 = df2.set_index(['City', 'State', df2.groupby(['City', 'State']).cumcount()])
    
    
    df3 = (pd.concat([df1, df2],axis=1)
             .sort_index(level=2)
             .reset_index(level=2, drop=True)
             .reset_index())
    print (df3)
          City    State       Fruit  Pounds  Drink  Ounces
    0   Austin    Texas       Mango      10    Gin   200.0
    1   Hoover  Alabama       Mango      90    Gin    34.0
    2  Houston    Texas       Mango       4    Gin    16.0
    3   Austin    Texas      Orange       8  Vodka    33.0
    4   Hoover  Alabama      Orange      14  Vodka    18.0
    5  Houston    Texas      Orange      10  Vodka    20.0
    6   Austin    Texas  Watermelon      99    NaN     NaN
    7   Hoover  Alabama  Watermelon      43    NaN     NaN
    8  Houston    Texas  Watermelon      40    NaN     NaN
    
    0 讨论(0)
提交回复
热议问题