How to convert index in a column of the Pandas dataframe?

Each row in a dataframe (i.e level=0) has an index value i.e value from 0 to n-1 index location and there are many ways to convert these index values into a column in a pandas dataframe. First, let’s create a Pandas dataframe. Here, we will create a Pandas dataframe regarding student’s marks in a particular subject with columns roll number, name, score, grade, and subject.

Example:

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing the pandas library as pd 
import pandas as pd     
  
  
# Creating the dataframe Ab 
AB = pd.DataFrame({'Roll Number': ['9917102206', '9917102250'
                                   '9917102203', '9917102204',
                                   '9917102231'], 
                   'Name': ['TANYA', 'PREETIKA', 'KUSHAGRA'
                            'PRAKHAR','ASHISH'], 
                   'Score': [99, 98, 50, 45,97], 
                   'Grade': ['A+', 'A+', 'C+', 'C','A'], 
                   'Subject': ['Operating Systems', 'Operating Systems',
                               'Operating Systems', 'Operating Systems',
                               'Operating Systems']}) 
    
# Printing the dataframe 
AB

chevron_right


Output:

DATA FRAME CREATED

Method 1: Creating a new Index column



Here we will learn to create a new column in the existing dataframe as an index and add index value of each row(level=0) to that column.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing the pandas library as pd 
import pandas as pd     
  
  
# Creating the dataframe Ab 
AB = pd.DataFrame({'Roll Number': ['9917102206', '9917102250'
                                   '9917102203', '9917102204',
                                   '9917102231'], 
                   'Name': ['TANYA', 'PREETIKA', 'KUSHAGRA',
                            'PRAKHAR','ASHISH'], 
                   'Score': [99, 98, 50, 45,97], 
                   'Grade': ['A+', 'A+', 'C+', 'C','A'], 
                   'Subject': ['Operating Systems', 'Operating Systems'
                               'Operating Systems', 'Operating Systems',
                               'Operating Systems']}) 
    
      
# Adding a new index column to existing
# data frame and passing index value   
AB['index'] = AB.index
  
# Printing the dataframe 
AB

chevron_right


Output:

Here, we added a new column “index” to “AB” dataframe using the index value of each row in the dataframe as an argument value and converted index to the column.

Method 2: Using reset_index() method and to_string() method

Here we will sue reset_index() method to convert the index to a column along with inplace argument to reflect the change continuously and we will use the to_string() method for hiding the index value shown by default whenever a dataframe is printed.

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

#CREATING A DATAFRAME FOR STUDENTS PORTFOLIO
  
# importing the pandas library as pd 
import pandas as pd     
# Creating the dataframe Ab 
AB = pd.DataFrame({'Roll Number': ['9917102206', '9917102250', '9917102203', '9917102204','9917102231'], 
                   'Name': ['TANYA', 'PREETIKA', 'KUSHAGRA', 'PRAKHAR','ASHISH'], 
                   'Score': [99, 98, 50, 45,97], 
                   'Grade': ['A+', 'A+', 'C+', 'C','A'], 
                   'Subject': ['Operating Systems', 'Operating Systems', 'Operating Systems', 'Operating Systems','Operating Systems']}) 
    
      
# importing the pandas library as pd 
import pandas as pd     
  
  
# Creating the dataframe Ab 
AB = pd.DataFrame({'Roll Number': ['9917102206', '9917102250'
                                   '9917102203', '9917102204',
                                   '9917102231'], 
                   'Name': ['TANYA', 'PREETIKA', 'KUSHAGRA',
                            'PRAKHAR','ASHISH'], 
                   'Score': [99, 98, 50, 45,97], 
                   'Grade': ['A+', 'A+', 'C+', 'C','A'], 
                   'Subject': ['Operating Systems', 'Operating Systems'
                               'Operating Systems', 'Operating Systems',
                               'Operating Systems']}) 
    
      
# USING RESET_INDEX METHOD
# Adding a new index column to AB dataframe
AB.reset_index(level=0, inplace=True
  
# HIDING THE DEFAULT INDEX VALUES AND
# PRINTING DATAFRAME
print( AB.to_string(index=False))

chevron_right


Output:



USING RESET_INDEX METHOD

Here we applied reset_index method to given data frame and make the default index value (equal to 0) by passing it as an arguement to to_string method.

Method 3: Using multi_index

Here We will learn to create columns from a dataframe having multi-index.

Example 1: For multi-index to column

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing the pandas library as pd 
import pandas as pd     
  
# ADDING MULTI INDEX TO DATA FRAME
new_index = pd.MultiIndex.from_tuples([('E4','ECE'),
                                       ('E5','ECE'),
                                       ('E6','ECE'),
                                       ('E7','ECE'),
                                       ('E8','ECE')],
                                       names=['BATCH','BRANCH'])
# Creating the dataframe AB
data =({'Roll Number': ['9917102206', '9917102250'
                        '9917102203', '9917102204',
                        '9917102231'], 
                   'Name': ['TANYA', 'PREETIKA', 'KUSHAGRA',
                            'PRAKHAR','ASHISH'], 
                   'Score': [99, 98, 50, 45,97], 
                   'Grade': ['A+', 'A+', 'C+', 'C','A'], 
                   'Subject': ['Operating Systems', 'Operating Systems',
                               'Operating Systems', 'Operating Systems',
                               'Operating Systems']}) 
    
# COMBING DATA FRAME AND MULTI INDEX 
# VALUES AND FORMING DATA FRAME
AB = pd.DataFrame(data, columns = ['Roll Number','Name','Score','Grade','Subject'], 
                  index=new_index)
  
# MAKING MULTI INDEX NOW A PART OF COLUMN 
# OF DATAFRAME
AB.reset_index(inplace=True
  
AB

chevron_right


Output:

Example 2: For making specific column from multi-index as a column of dataframe

Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing the pandas library as pd 
import pandas as pd     
  
# ADDING MULTI INDEX TO DATA FRAME
new_index = pd.MultiIndex.from_tuples([('E4','ECE'),
                                       ('E5','ECE'),
                                       ('E6','ECE'),
                                       ('E7','ECE'),
                                       ('E8','ECE')],
                                       names=['BATCH','BRANCH'])
# Creating the dataframe AB
data =({'Roll Number': ['9917102206', '9917102250'
                        '9917102203', '9917102204',
                        '9917102231'], 
                   'Name': ['TANYA', 'PREETIKA', 'KUSHAGRA',
                            'PRAKHAR','ASHISH'], 
                   'Score': [99, 98, 50, 45,97], 
                   'Grade': ['A+', 'A+', 'C+', 'C','A'], 
                   'Subject': ['Operating Systems', 'Operating Systems',
                               'Operating Systems', 'Operating Systems',
                               'Operating Systems']}) 
    
# COMBING DATA FRAME AND MULTI INDEX 
# VALUES AND FORMING DATA FRAME
AB = pd.DataFrame(data, columns = ['Roll Number','Name','Score','Grade','Subject'],
                  index=new_index)
  
# MAKING SPECIFIC COLUMN OF MULTI INDEX 
# NOW A PART OF COLUMN OF DATAFRAME
AB.reset_index(inplace=True,level=['BATCH']) 
  
# BATCH INDEX IS NOW A COLUMN OF DATAFRAME
AB

chevron_right


Output:




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.