I have a DataFrame that looks like this:
And I would like to transform it into something that looks like this
You can switch from a wide to long format with melt. I've done this with a minimal example.
>>> df
  name  old_price  new_price
0    a        100        200
1    b        105        205
>>> df.melt(id_vars='name', var_name='price_type', value_name='price') 
  name price_type  price
0    a  old_price    100
1    b  old_price    105
2    a  new_price    200
3    b  new_price    205
The column given for id_vars is repeated for each "melted" row; the rest are "melted" into the var_name column and their respective value is put in the value_name column.
