I'd like to melt a DataFrame without using any loops. Suppose I have a DataFrame looking something like this:
df = pd.DataFrame({'var1': [1,2,3,4,5]*100,
'var2': [1,2,3,4,5]*100,
'col1': ['a','b']*250,
'col2': ['c','d']*250,})
var1 var2 col1 col2
0 1 1 a c
1 2 2 b d
2 3 3 a c
3 4 4 b d
4 5 5 a c
.. ... ... ... ...
495 1 1 b d
496 2 2 a c
497 3 3 b d
498 4 4 a c
499 5 5 b d
And now I want to melt the data:
df.melt(value_vars=['var1', 'var2'], var_name='var', id_vars=['col1', 'col2'])
col1 col2 var value
0 a c var1 1
1 b d var1 2
2 a c var1 3
3 b d var1 4
4 a c var1 5
.. ... ... ... ...
995 b d var2 1
996 a c var2 2
997 b d var2 3
998 a c var2 4
999 b d var2 5
Is it possible to melt the data without using any loops to one column with id_vars? So it would end up looking something like this:
col var value
0 a var1 1
1 b var1 2
2 a var1 3
3 b var1 4
4 a var1 5
5 c var2 1
6 d var2 2
7 c var2 3
8 d var2 4
9 c var2 5
.. .. .... ..