1

I have a pandas dataframe df:

    column1 column2 column3
    -----------------------
     a0      0.25   x1
     a0      0.05   x3
     a0      0.70   x2
     a1      0.25   x3
     a1      0.70   x2
     a1      0.05   x1

Trying to reshpe the df like below:

   column3   a0    a1
   ---------------------
    x1       0.25  0.05
    x2       0.7   0.70
    x3       0.05  0.25  

Tried:

df.set_index([df.groupby('column3').cumcount(), 'column3']).column2.unstack() 
deadbug
  • 434
  • 5
  • 19

1 Answers1

1

Use-

df.pivot(values='column2', index='column3', columns='column1')

Output

column1 a0  a1
column3     
x1  0.25    0.05
x2  0.70    0.70
x3  0.05    0.25

Use rename_axis() for resetting the index -

df.pivot(values='column2', index='column3', columns='column1').rename_axis(None)

column1 a0  a1
x1  0.25    0.05
x2  0.70    0.70
x3  0.05    0.25
Vivek Kalyanarangan
  • 8,951
  • 1
  • 23
  • 42