0

I have a df like this:

datestamp   country_code    device  name        variable    value       running
2020-10-05  UK              mobile  google      cost        219.4743    219.474300
2020-10-06  UK              mobile  google      cost        112.0295    165.751900
2020-10-07  UK              mobile  google      cost        101.6345    144.379433
2020-10-08  UK              mobile  google      cost        147.5806    145.179725
2020-10-09  UK              mobile  google      cost        132.1665    142.577080
... ... ...                 ... ... ... ...
2020-11-12  UK              mobile  google      revenue     1035.3300   1403.922000
2020-11-13  UK              mobile  google      revenue     888.9100    993.758000
2020-11-14  UK              mobile  google      revenue     1167.1100   1031.786000
2020-11-15  UK              mobile  google      revenue     1136.3700   1075.656000
2020-11-16  UK              mobile  google      revenue     762.6200    998.068000

I am trying to make it look like this:

datestamp   country_code    device  name       variable     variable_2  value           
2020-10-05  UK              mobile  google      cost        value       219.4743
2020-10-06  UK              mobile  google      cost        running     219.474300 
2020-10-07  UK              mobile  google      cost        value       112.0295
2020-10-08  UK              mobile  google      cost        running     165.751900
2020-10-09  UK              mobile  google      cost        value       101.6345
2020-10-09  UK              mobile  google      cost        running     144.379433
... ... ...                 ... ... ... ...
2020-11-12  UK              mobile  google      revenue     value       1035.3300
2020-11-13  UK              mobile  google      revenue     running     1403.922000
2020-11-14  UK              mobile  google      revenue     value       888.9100
2020-11-15  UK              mobile  google      revenue     running     993.758000

Where the value and running becomes an entry in a row.

Mayank Porwal
  • 33,470
  • 8
  • 37
  • 58
Jonas Palačionis
  • 4,591
  • 4
  • 22
  • 55

1 Answers1

1

Are you looking for df.melt?

In [3573]: df.melt(id_vars=['datestamp','country_code','device','name','variable'], value_name='value', var_name='varaible_2').sort_values('datestamp')
Out[3573]: 
    datestamp country_code  device    name variable varaible_2       value
0  2020-10-05           UK  mobile  google     cost      value  219.474300
5  2020-10-05           UK  mobile  google     cost    running  219.474300
1  2020-10-06           UK  mobile  google     cost      value  112.029500
6  2020-10-06           UK  mobile  google     cost    running  165.751900
2  2020-10-07           UK  mobile  google     cost      value  101.634500
7  2020-10-07           UK  mobile  google     cost    running  144.379433
3  2020-10-08           UK  mobile  google     cost      value  147.580600
8  2020-10-08           UK  mobile  google     cost    running  145.179725
4  2020-10-09           UK  mobile  google     cost      value  132.166500
9  2020-10-09           UK  mobile  google     cost    running  142.577080
Mayank Porwal
  • 33,470
  • 8
  • 37
  • 58