As a data analyst or a data scientist, you might have come across the need to iterate over a Pandas dataframe rows. In this article, we will discuss how to iterate over rows of a Pandas dataframe and some best practices for doing so.

Loading a Sample Pandas Dataframe

Copy the code below if you’d like to follow along with an example dataframe. To print a small dataframe in its totality, we will load it. Running this dataframe should not cause any significant speed issues, but they will become more apparent as your dataset expands.

				
					import pandas as pd

# create a sample dataframe
data = {'name': ['John', 'Emily', 'Kate', 'Sam'],
        'age': [25, 30, 28, 35],
        'gender': ['Male', 'Female', 'Female', 'Male']}
df = pd.DataFrame(data)

# rename the index using the rename() method
df = df.rename(index={0: 'row1', 1: 'row2', 2: 'row3', 3: 'row4'})

# print the updated dataframe
print(df)

				
			

Output:

				
					#    name  age  gender
# 0   John   25    Male
# 1  Emily   30  Female
# 2   Kate   28  Female
# 3    Sam   35    Male
				
			

This code will create a dataframe with three columns (‘name’, ‘age’, and ‘gender’) and four rows of data.  We then create a Pandas DataFrame from the dictionary using the pd.DataFrame() constructor. Finally, we print the DataFrame to verify that it was created correctly.

How to Rename a Pandas Dataframe Index

To do that, you can rename the index of a Pandas dataframe using the rename() method or by directly assigning a new name to the index.name attribute.

Here’s an example:

				
					import pandas as pd

# create a sample dataframe
data = {'name': ['John', 'Emily', 'Kate', 'Sam'],
        'age': [25, 30, 28, 35],
        'gender': ['Male', 'Female', 'Female', 'Male']}
df = pd.DataFrame(data)

# rename the index using the rename() method
df = df.rename(index={0: 'row1', 1: 'row2', 2: 'row3', 3: 'row4'})

# print the updated dataframe
print(df)

				
			

Output:

				
					#        name  age  gender
# row1   John   25    Male
# row2  Emily   30  Female
# row3   Kate   28  Female
# row4    Sam   35    Male

				
			

In this method, we use the rename() method to rename the index of the dataframe. The index parameter takes a dictionary where the keys are the old index values, and the values are the new index values. In this example, we are renaming the index values 0, 1, 2, and 3 to row1, row2, row3, and row4, respectively.

Second method:  Assigning a new name to index.name attribute.

Here’s an example:

				
					import pandas as pd

# create a sample dataframe
data = {'name': ['John', 'Emily', 'Kate', 'Sam'],
        'age': [25, 30, 28, 35],
        'gender': ['Male', 'Female', 'Female', 'Male']}
df = pd.DataFrame(data)

# rename the index using the index.name attribute
df.index.name = 'row_id'

# print the updated dataframe
print(df)

				
			

Output:

				
					#         name  age  gender
# row_id                    
# 0        John   25    Male
# 1       Emily   30  Female
# 2        Kate   28  Female
# 3         Sam   35    Male
				
			

In this method, we directly assign a new name to the index.name attribute. In this example, we are renaming the index name to row_id.

Both methods will produce the same result, which is a dataframe with the updated index names.

How to Rename a Pandas Multi-Index

It can be challenging to work with Pandas multi-index dataframes, but changing their indices doesn’t have to be. You can rename a Pandas multi-index using the rename() method.

Here’s an example:

				
					import pandas as pd

# create a sample dataframe with multi-index
data = {'name': ['John', 'John', 'Emily', 'Emily', 'Kate', 'Kate', 'Sam', 'Sam'],
        'gender': ['Male', 'Male', 'Female', 'Female', 'Female', 'Female', 'Male', 'Male'],
        'age': [25, 26, 30, 31, 28, 29, 35, 36]}
multi_index = pd.MultiIndex.from_arrays([['A', 'A', 'B', 'B', 'C', 'C', 'D', 'D'], ['M', 'F', 'M', 'F', 'F', 'M', 'M', 'F']], names=['Group', 'Gender'])
df = pd.DataFrame(data, index=multi_index)

# rename the multi-index using the rename() method
df = df.rename(index={'A': 'Group1', 'B': 'Group2', 'C': 'Group3', 'D': 'Group4'})

# print the updated dataframe
print(df)

				
			

Output:

				
					#               name  gender  #age
# Group  Gender                    
# Group1 M        John    Male   25
      # F        John    Male   26
# Group2 M       Emily  Female   30
       #F       Emily  Female   31
# Group3 F        Kate  Female   28
      # M        Kate  Female   29
# Group4 M         Sam    Male   35
     #  F         Sam    Male   36

				
			

In this example, we first create a sample dataframe df with a multi-index consisting of two levels (‘Group’ and ‘Gender’). We then use the rename() method to rename the levels of the multi-index. The index parameter takes a dictionary where the keys are the old level names, and the values are the new level names. In this case, we are renaming the level names ‘A’, ‘B’, ‘C’, and ‘D’ to ‘Group1’, ‘Group2’, ‘Group3’, and ‘Group4’, respectively.

Finally, we print the updated dataframe using the print() function. Note that this method only changes the names of the levels and does not change the actual index values.

How to Remove a Pandas Index Name

To remove a Pandas dataframe index name, we can simply use the rename_axis() method. 

Here’s an example:

				
					import pandas as pd

# create a sample dataframe with an index name
data = {'name': ['John', 'Emily', 'Kate', 'Sam'],
        'age': [25, 30, None, 35]}
df = pd.DataFrame(data, index=['row1', 'row2', 'row3', 'row4'])
df.index.name = 'ID'

# remove the index name by setting it to an empty string
df.index.name = None

# print the updated dataframe
print(df)
				
			

Output:

				
					#       name   age
# row1   John  25.0
# row2  Emily  30.0
# row3   Kate   NaN
# row4    Sam  35.0
				
			

In this example, we first create a sample dataframe df with an index name ‘ID’. We then use the rename_axis() method to remove the name of the index. We pass None to the method, which removes the name of the index.

Finally, we print the updated dataframe using the print() function. Note that after removing the index name, the output will not display the name of the index.

Wrap up

To learn more about the Pandas dataframe index.name attribute, check out the the official documentation here:
https://pandas.pydata.org/docs


Thanks for reading. Happy coding!