19

How can I convert a pandas pivot table to a regular dataframe ? For example:

                           amount                                                
categories                  A                B           C  
date         deposit                                                             
2017-01-15   6220140.00    5614354.16        0.00        0.00 
2017-01-16   7384354.00    6247300.22        0.00        0.00 
2017-01-17   6783939.00    10630021.37       0.00        0.00 
2017-01-18   67940.00      4659384.47        0.00        0.00

to a regular datetime such as this:

   date         deposit       A                 B           C                                                                         
0  2017-01-15   6220140.00    5614354.16        0.00        0.00 
1  2017-01-16   7384354.00    6247300.22        0.00        0.00 
2  2017-01-17   6783939.00    10630021.37       0.00        0.00 
3  2017-01-18   67940.00      4659384.47        0.00        0.00
DougKruger
  • 3,874
  • 11
  • 37
  • 57

3 Answers3

35

Use droplevel + index name to None + reset_index:

df.columns = df.columns.droplevel(0) #remove amount
df.columns.name = None               #remove categories
df = df.reset_index()                #index to columns

Alternatively use rename_axis:

df.columns = df.columns.droplevel(0)
df = df.reset_index().rename_axis(None, axis=1)

EDIT:

Maybe also help remove [] in parameter values - see this.

Community
  • 1
  • 1
jezrael
  • 729,927
  • 78
  • 1,141
  • 1,090
19
df = pd.DataFrame(df.to_records())
budfox3
  • 329
  • 2
  • 6
3

Was able to solve it using Reset index

Sample_df=df.reset_index()
Suraj Rao
  • 28,850
  • 10
  • 94
  • 99