0

Let's say that these are my data

day region cars motorcycles bikes buses
1    A      0      1           1    2
2    A      4      0           6    8
3    A      2      9           8    0
1    B      6      12          34   82
2    B      13     92          76   1
3    B      23     87          98   9
1    C      29     200         31   45
2    C      54     80          23   89
3    C      129    90          231  56

How do I make the regions columns and the columns(except for the day column) rows?

Basically, I want it to look like this :

day  vehicle_type   A    B   C
 1      cars        0    6   29
 2      cars        4   13   54
 3      cars        2   23   129
 1      motorcycles 1   12   200
 2      motorcycles 0   92   80
 3      motorcycles 9   87   90
 1        bikes     1   34   31
 2        bikes     6   76   23
 3        bikes     8   98   231
 1        buses     2   82   45
 2        buses     8   1    89
 3        buses     0   9    56
enas dyo
  • 35
  • 6
  • `df.melt(id_vars=['day', 'region']).pivot(columns='region', values='value', index=['variable', 'day']).reset_index()` –  May 09 '22 at 20:47

1 Answers1

0

Use stack and unstack:

(
    df.set_index(["day", "region"])
    .rename_axis(columns="vehicle_type")
    .stack()
    .unstack(level=1)
    .rename_axis(columns=None)
    .reset_index()
)
Code Different
  • 90,614
  • 16
  • 144
  • 163