Pandas column values to columns? [duplicate]

There are a few ways:

using .pivot_table:

>>> df.pivot_table(values="val", index=df.index, columns="key", aggfunc="first")
key      bar     baz      foo
id                           
2    bananas  apples  oranges
3      kiwis     NaN   grapes

using .pivot:

>>> df.pivot(index=df.index, columns="key")['val']
key      bar     baz      foo
id                           
2    bananas  apples  oranges
3      kiwis     NaN   grapes

using .groupby followed by .unstack:

>>> df.reset_index().groupby(['id', 'key'])['val'].aggregate('first').unstack()
key      bar     baz      foo
id                           
2    bananas  apples  oranges
3      kiwis     NaN   grapes

Leave a Comment