unstack multiindex dataframe to flat data frame in pandas

ipython, pandas, python

Solution

Using pandas.DataFrame.to_records().

Example:

import pandas as pd
import numpy as np
arrays = [['Monday','Monday','Tursday','Tursday'],
                        ['Morning','Noon','Morning','Evening']]
tuples = list(zip(*arrays))
index = pd.MultiIndex.from_tuples(tuples, names=['Weekday', 'Time'])
df = pd.DataFrame(np.random.randint(5, size=(4,2)), index=index)

In [39]: df
Out[39]: 
                 0  1
Weekday Time         
Monday  Morning  1  3
        Noon     2  1
Tursday Morning  3  3
        Evening  1  2

In [40]: pd.DataFrame(df.to_records())
Out[40]: 
   Weekday     Time  0  1
0   Monday  Morning  1  3
1   Monday     Noon  2  1
2  Tursday  Morning  3  3
3  Tursday  Evening  1  2

Problem

I have a multi index df called groupt3 in pandas which looks like this when I enter groupt3.head(): ``` datetime song sum rat artist datetime 2562 8 2 2 26 0 46 19 19 26 0 47 3 3 26 0 4Hero 1 2 2 32 0 26 20 20 32 0 9 10 10 32 0 ``` I would like to have a "flat" data frame which took the artist index and the date time index and "repeats it" to form this: ``` artist date time song sum rat 2562 8 2 26 0 2562 46 19 26 0 2562 47 3 26 0 ``` etc... Thanks.

Original source