close

How to get rid of multilevel index after using pivot table pandas?

Hello Guys, How are you all? Hope You all Are Fine. Today We Are Going To learn about How to get rid of multilevel index after using pivot table pandas in Python. So Here I am Explain to you all the possible Methods here.

Without wasting your time, Let’s start This Article.

Table of Contents

How to get rid of multilevel index after using pivot table pandas?

  1. How to get rid of multilevel index after using pivot table pandas?

    Make a DataFrame
    import random d = {'Country': ['Afghanistan','Albania','Algeria','Andorra','Angola']*2, 'Year': [2005]*5 + [2006]*5, 'Value': random.sample(range(1,20),10)}

  2. get rid of multilevel index after using pivot table pandas

    Make a DataFrame
    import random d = {'Country': ['Afghanistan','Albania','Algeria','Andorra','Angola']*2, 'Year': [2005]*5 + [2006]*5, 'Value': random.sample(range(1,20),10)}

Method 1

You need remove only index name, use rename_axis (new in pandas 0.18.0):

print (reshaped_df)
sale_product_id  1    8    52   312  315
sale_user_id                            
1                  1    1    1    5    1

print (reshaped_df.index.name)
sale_user_id

print (reshaped_df.rename_axis(None))
sale_product_id  1    8    52   312  315
1                  1    1    1    5    1

Another solution working in pandas below 0.18.0:

reshaped_df.index.name = None
print (reshaped_df)

sale_product_id  1    8    52   312  315
1                  1    1    1    5    1

If need remove columns name also:

print (reshaped_df.columns.name)
sale_product_id

print (reshaped_df.rename_axis(None).rename_axis(None, axis=1))
   1    8    52   312  315
1    1    1    1    5    1

Another solution:

reshaped_df.columns.name = None
reshaped_df.index.name = None
print (reshaped_df)
   1    8    52   312  315
1    1    1    1    5    1

EDIT by comment:

You need reset_index with parameter drop=True:

reshaped_df = reshaped_df.reset_index(drop=True)
print (reshaped_df)
sale_product_id  1    8    52   312  315
0                  1    1    1    5    1

#if need reset index nad remove column name
reshaped_df = reshaped_df.reset_index(drop=True).rename_axis(None, axis=1)
print (reshaped_df)
   1    8    52   312  315
0    1    1    1    5    1

Of if need remove only column name:

reshaped_df = reshaped_df.rename_axis(None, axis=1)
print (reshaped_df)
              1    8    52   312  315
sale_user_id                         
1               1    1    1    5    1

Edit1:

So if need create new column from index and remove columns names:

reshaped_df =  reshaped_df.rename_axis(None, axis=1).reset_index() 
print (reshaped_df)
   sale_user_id  1  8  52  312  315
0             1  1  1   1    5    1

Method 2

Make a DataFrame

import random

d = {'Country': ['Afghanistan','Albania','Algeria','Andorra','Angola']*2, 
     'Year': [2005]*5 + [2006]*5, 'Value': random.sample(range(1,20),10)}
df = pd.DataFrame(data=d)

df:

                Country         Year   Value    
1               Afghanistan     2005    6
2               Albania         2005    13
3               Algeria         2005    10
4               Andorra         2005    11
5               Angola          2005    5
6               Afghanistan     2006    3
7               Albania         2006    2
8               Algeria         2006    7
9               Andorra         2006    3
10              Angola          2006    6

Pivot

table = df.pivot(index='Country',columns='Year',values='Value')

Table:

Year    Country         2005    2006
0       Afghanistan     16      9
1       Albania         17      19
2       Algeria         11      7
3       Andorra         5       12
4       Angola          6       18

I want ‘Year’ to be ‘index’:

clean_tbl = table.rename_axis(None, axis=1).reset_index(drop=True)

clean_tbl:

    Country         2005    2006
0   Afghanistan     16      9
1   Albania         17      19
2   Algeria         11      7
3   Andorra         5       12
4   Angola          6       18

Done!

Summery

It’s all About this issue. Hope all Methods helped you a lot. Comment below Your thoughts and your queries. Also, Comment below which Method worked for you? Thank You.

Also, Read