I have a dataframe like this:
df = pd.DataFrame({'country': ['usa','canada','usa','canada','mexico','usa'],
'color': ['silver','brown','brown','black','silver','black'],
'car': ['honda','honda','nissan','toyota','honda','toyota'],
'value': range(60,66)})
car color country value
0 honda silver usa 60
1 honda brown canada 61
2 nissan brown usa 62
3 toyota black canada 63
4 honda silver mexico 64
5 toyota black usa 65
I can pivot by two indices like this:
df.pivot_table(index=['color','car'], columns='country', values='value')\
.rename_axis(None, axis=1).reset_index()
color car canada mexico usa
0 black toyota 63.0 NaN 65.0
1 brown honda 61.0 NaN NaN
2 brown nissan NaN NaN 62.0
3 silver honda NaN 64.0 60.0
I was wondering how can we achieve the same result using GROUPBY ?
Help is appreciated.
Similar questions:
Pandas column values to columns?