pythonpandaspivotreshapemelt

Opposite of melt in python pandas


I cannot figure out how to do "reverse melt" using Pandas in python. This is my starting data

  label type  value
0     x    a      1
1     x    b      2
2     x    c      3
3     y    a      4
4     y    b      5
5     y    c      6
6     z    a      7
7     z    b      8
8     z    c      9

This is the output I would like to have:

label   a   b   c
    x   1   2   3
    y   4   5   6
    z   7   8   9

I'm sure there is an easy way to do this, but I don't know how.


Solution

  • there are a few ways:

    using .pivot:

    >>> origin.pivot(index='label', columns='type')['value']
    type   a  b  c
    label         
    x      1  2  3
    y      4  5  6
    z      7  8  9
    
    [3 rows x 3 columns]
    

    using pivot_table:

    >>> origin.pivot_table(values='value', index='label', columns='type')
           value      
    type       a  b  c
    label             
    x          1  2  3
    y          4  5  6
    z          7  8  9
    
    [3 rows x 3 columns]
    

    or .groupby followed by .unstack:

    >>> origin.groupby(['label', 'type'])['value'].aggregate('mean').unstack()
    type   a  b  c
    label         
    x      1  2  3
    y      4  5  6
    z      7  8  9
    
    [3 rows x 3 columns]