I have a table like this.
user 01/12/15 02/12/15 someBool
u1 100 300 true
u2 200 -100 false
u3 -50 200
You need melt:
df = pd.melt(df, id_vars=['user','someBool'], var_name='date')
print (df)
user someBool date value
0 u1 True 01/12/15 100
1 u2 False 01/12/15 200
2 u3 True 01/12/15 -50
3 u1 True 02/12/15 300
4 u2 False 02/12/15 -100
5 u3 True 02/12/15 200
Another solution with stack:
df = df.set_index(['user','someBool'])
.stack()
.reset_index(name='value')
.rename(columns={'level_2':'date'})
print (df)
user someBool date value
0 u1 True 01/12/15 100
1 u1 True 02/12/15 300
2 u2 False 01/12/15 200
3 u2 False 02/12/15 -100
4 u3 True 01/12/15 -50
5 u3 True 02/12/15 200