combine multiple column into one in pandas

I have table like below

  Column 1  Column 2   Column 3 ...
0        a         1          2
1        b         1          3
2        c         2          1

and I want to convert it to be like below

  Column 1 Column 2
0        a        1
1        a        2
2        b        1
3        b        3
4        c        2
5        c        1
...

I want to take each value from Column 2 (and so on) and pair it to value in column 1. I have no idea how to do it in pandas or even where to start.

>Solution :

You can use pd.melt to do this:

>>> df = pd.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},
...                    'B': {0: 1, 1: 3, 2: 5},
...                    'C': {0: 2, 1: 4, 2: 6}})

>>> df

   A  B  C
0  a  1  2
1  b  3  4
2  c  5  6

>>> pd.melt(df, id_vars=['A'], value_vars=['B', 'C'])

   A variable  value
0  a        B      1
1  b        B      3
2  c        B      5
3  a        C      2
4  b        C      4
5  c        C      6

Leave a Reply