Given the following data:
s = '{"PassengerId":{"0":1,"1":2,"2":3},"Survived":{"0":0,"1":1,"2":1},"Pclass":{"0":3,"1":1,"2":3}}'
df = pd.read_json(s)
Which looks as:
   PassengerId  Survived  Pclass
0            1         0       3
1            2         1       1
2            3         1       3
Assume that it has been melted to
m = df.melt()
print(m)
      variable  value
0  PassengerId      1
1  PassengerId      2
2  PassengerId      3
3     Survived      0
4     Survived      1
5     Survived      1
6       Pclass      3
7       Pclass      1
8       Pclass      3
I would like to know how to revert the melted m to the original df.
I have tried something similar to the following:
m=df.melt().pivot(columns='variable', values='value').reset_index(drop=True)
m.columns.name = None
which gives
   PassengerId  Pclass  Survived
0          1.0     NaN       NaN
1          2.0     NaN       NaN
2          3.0     NaN       NaN
3          NaN     NaN       0.0
4          NaN     NaN       1.0
5          NaN     NaN       1.0
6          NaN     3.0       NaN
7          NaN     1.0       NaN
8          NaN     3.0       NaN
as can be seen, each row contains information about a single column only, there are lots of NaN values in there that I would like to lose.
 
     
    