w3resource

Pandas: Convert into specified number of columns from multi levels index


Write a Pandas program to convert 1st and 3rd levels in the index into columns from a multiple level of index frame of a given dataframe.

Test Data:

0        s001     V  Alberto Franco     15/05/2002      35  street1   t1
1        s002     V    Gino Mcneill     17/05/2002      32  street2   t2
2        s003    VI     Ryan Parkes     16/02/1999      33  street3   t3
3        s001    VI    Eesha Hinton     25/09/1998      30  street1   t4
4        s002     V    Gino Mcneill     11/05/2002      31  street2   t5
5        s004    VI    David Parkes     15/09/1997      32  street4   t6

Sample Solution:

Python Code :

import pandas as pd
df = pd.DataFrame({
    'school_code': ['s001','s002','s003','s001','s002','s004'],
    'class': ['V', 'V', 'VI', 'VI', 'V', 'VI'],
    'name': ['Alberto Franco','Gino Mcneill','Ryan Parkes', 'Eesha Hinton', 'Gino Mcneill', 'David Parkes'],
    'date_of_birth': ['15/05/2002','17/05/2002','16/02/1999','25/09/1998','11/05/2002','15/09/1997'],
    'weight': [35, 32, 33, 30, 31, 32],
    't_id': ['t1', 't2', 't3', 't4', 't5', 't6']})
print("Original DataFrame:")
print(df)
print("\nMultiIndex using columns 't_id', ‘school_code’ and 'class':")
df1 = df.set_index(['t_id', 'school_code', 'class'])
print(df1)
print("\nConvert 1st and 3rd levels in the index frame into columns:")
df2 = df1.reset_index(level=['t_id', 'class'])
print(df2)

Sample Output:

Original DataFrame:
  school_code class            name date_of_birth  weight t_id
0        s001     V  Alberto Franco    15/05/2002      35   t1
1        s002     V    Gino Mcneill    17/05/2002      32   t2
2        s003    VI     Ryan Parkes    16/02/1999      33   t3
3        s001    VI    Eesha Hinton    25/09/1998      30   t4
4        s002     V    Gino Mcneill    11/05/2002      31   t5
5        s004    VI    David Parkes    15/09/1997      32   t6

MultiIndex using columns 't_id', ‘school_code’ and 'class':
                                  name date_of_birth  weight
t_id school_code class                                      
t1   s001        V      Alberto Franco    15/05/2002      35
t2   s002        V        Gino Mcneill    17/05/2002      32
t3   s003        VI        Ryan Parkes    16/02/1999      33
t4   s001        VI       Eesha Hinton    25/09/1998      30
t5   s002        V        Gino Mcneill    11/05/2002      31
t6   s004        VI       David Parkes    15/09/1997      32

Convert 1st and 3rd levels in the index frame into columns:
            t_id class            name date_of_birth  weight
school_code                                                 
s001          t1     V  Alberto Franco    15/05/2002      35
s002          t2     V    Gino Mcneill    17/05/2002      32
s003          t3    VI     Ryan Parkes    16/02/1999      33
s001          t4    VI    Eesha Hinton    25/09/1998      30
s002          t5     V    Gino Mcneill    11/05/2002      31
s004          t6    VI    David Parkes    15/09/1997      32  

Python Code Editor:

Have another way to solve this solution? Contribute your code (and comments) through Disqus.

Previous: Write a Pandas program to convert index of a given dataframe into a column.
Next: Write a Pandas program to check if a specified value exists in single and multiple column index dataframe.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.