How to collapse a pandas dataframe? (pivot table)

df.pivot_table is the correct solution:

In[31]: df.pivot_table(values='proportion', index='day_of_week', columns='ice_cream').reset_index()
Out[31]: 
    ice_cream day_of_week  chocolate  strawberry   vanilla
0              Friday   0.663506    0.251021  0.094473
1              Monday   0.691437    0.228828  0.079736
2            Saturday   0.712930         NaN  0.073350

If you leave out reset_index() it will actually return an indexed dataframe, which might be more useful for you.

Note that a pivot table necessarily performs a dimensionality reduction when the values column is not a function of the tuple (index, columns). If there are multiple (index, columns) pairs with different value pivot_table brings the dimensionality down to one by using an aggregation function, by default mean.


You are looking for pivot_table

df = pd.pivot_table(df, index='day_of_week', columns='ice_cream', values = 'proportion')

You get:

ice_cream   chocolate   strawberry  vanilla
day_of_week         
Friday      0.663506    0.251021    0.094473
Monday      0.691437    0.228828    0.079736
Saturday    0.712930    NaN         0.073350

Tags:

Python

Pandas