0

I have a dataframe that looks like this:

first_name    |    last_name    |    status    |    amount
john          |    doe          |    approved  |    2
john          |    doe          |    denied    |    4
john          |    doe          |    waiting   |    1
...           |    ...          |    ...       |    ...
max           |    mustermann   |    approved  |    0
max           |    mustermann   |    denied    |    17
...           |    ...          |    ...       |    ...
jane          |    doe          |    approved  |    8
jane          |    doe          |    denied    |    1
jane          |    doe          |    waiting   |    0

Is it possible to change the format of dataframe into something like this?

first_name    |    last_name    |    approved    |    denied    |    waiting
john          |    doe          |    2           |    4         |    1
jane          |    doe          |    8           |    1         |    0

Thanks for your help and have a great day!

finethen
  • 385
  • 1
  • 4
  • 19

1 Answers1

1

You can use df.pivot(), as follows:

df.pivot(index=['first_name', 'last_name'], columns='status').droplevel(level=0, axis=1).rename_axis(columns=None, axis=1).reset_index()

Result:

  first_name   last_name  approved  denied  waiting
0       jane         doe       8.0     1.0      0.0
1       john         doe       2.0     4.0      1.0
2        max  mustermann       0.0    17.0      NaN
SeaBean
  • 22,547
  • 3
  • 13
  • 25