Python: Pandas Methods to Rename Columns

Harsh S.
By
Harsh S.
Hello, I'm Harsh, I hold a degree in Masters of Computer Applications. I have worked in different IT companies as a development lead on many large-scale...
7 Min Read

Searching for ways to rename a column using Pandas? This is a common operation you might have to perform while using a data frame. This tutorial will walk you through several methods to rename one or more columns in Pandas, providing examples and a comparison of each method to help you choose the most suitable approach for your data manipulation needs.

How to Rename One or More Columns in Pandas

In this Python tutorial, we’ll cover the following topics. Please make sure you first go through the brief description in the examples and then check out the code. It will ensure you understand the code and its purpose clearly.

By the way, once you finish with this tutorial, you might like to check up on the 3 ways to read a CSV file in Python using Pandas including multiple examples.

Rename a Single Column in Pandas

You can rename a single column in a Pandas DataFrame using the rename() API. Let’s suppose we have a data frame with a column named “old_col,” and we want to rename it to “new_col.”

import pandas as pd

# Create a sample DataFrame
data = {'old_col': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data)

# Rename the 'old_col' to 'new_col'
df.rename(columns={'old_col': 'new_col'}, inplace=True)

print(df)

This code will rename the ‘old_col’ to ‘new_col’ in the data frame. The inplace=True parameter modifies the original data frame. If you omit it or set it to False, the original data frame will remain unchanged.

Rename More than One Column Using Pandas

To rename more than one column in a Pandas DataFrame, pass a dictionary using the current column names as keys and the new names as values. Here’s an example:

# Create a sample DataFrame with more than one column
data = {'old_col1': [1, 2, 3, 4, 5],
        'old_col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)

# Rename one or more columns
df.rename(columns={'old_col1': 'new_col1', 'old_col2': 'new_col2'}, inplace=True)

print(df)

This code will rename both ‘old_col1’ and ‘old_col2’ to ‘new_col1’ and ‘new_col2,’ respectively. Again, you can choose to modify the original data frame in place by setting inplace=True.

Renaming Columns with a Dictionary

You can also use a dictionary to rename columns in a more dynamic way. This is useful when you want to rename specific columns based on a mapping. Here’s an example:

# Create a sample DataFrame
data = {'A': [1, 2, 3, 4, 5],
        'B': ['apple', 'banana', 'cherry', 'date', 'elderberry']}
df = pd.DataFrame(data)

# Define a dict to map old names to new names
column_mapping = {'A': 'Number', 'B': 'Fruit'}

# Rename columns using the dictionary
df.rename(columns=column_mapping, inplace=True)

print(df)

Must Read: Convert Python Dictionary to DataFrame

In this example, we create a dictionary column_mapping that specifies the mapping of old column names to new names. Using this dictionary, we rename the columns in the Pandas data frame accordingly.

In-place vs. Non-Inplace Renaming

As mentioned earlier, you can choose between in-place and non in place renaming by setting the inplace option in the rename API.

  • In place, renaming modifies your original data frame and does not return a new one.
  • The non-inplace renaming returns a new data frame with the renamed columns, leaving the original one unchanged.

Here’s an example to illustrate the difference:

# Create a sample DataFrame
data = {'old_col1': [1, 2, 3, 4, 5],
        'old_col2': ['A', 'B', 'C', 'D', 'E']}
df = pd.DataFrame(data)

# Rename columns non-inplace (returns a new DataFrame)
new_df = df.rename(columns={'old_col1': 'new_col1', 'old_col2': 'new_col2'})

print("Original DataFrame:")
print(df)

print("\nRenamed DataFrame (non-inplace):")
print(new_df)

In this example, df.rename(...) does not modify the original data frame df. It returns a new data frame object, new_df with the renamed columns. This allows you to keep both the original and the renamed versions.

If you want to modify the original data frame in place, you would set the value of the "inplace" option to True as demonstrated in previous examples.

Comparing the Different Approaches

Now, let’s compare the different approaches used to rename one or more columns in Pandas:

MethodUse CaseProsCons
Single Column RenamingRenaming one column– Simple and clean approach
– In-place or non in place option
Not suitable for renaming more than one column
Multi Column RenamingRenaming more than one column– Efficient for renaming several columns
– In-place or non in place option
May become verbose for a large number of columns
Dictionary MappingDynamic renaming based on a Dictionary Mapping– Flexible and dynamic
– Useful for complex renaming patterns
Requires defining a mapping dictionary
Renaming columns in Pandas

Furthermore, a common misconception is that the Pandas set_axis() function also renames columns in a data frame. However, this is not true as it only changes the labels of rows or columns but does not assign new names to columns.

Conclusion

In this tutorial, you’ve learned various examples for renaming columns in a Pandas data frame. Each method has its own benefits and use cases, so the choice depends on your specific requirements:

  • For renaming a single column, use the “Single Column Renaming” method.
  • When renaming more than two or more columns, the “Multi-Column Renaming” method is efficient.
  • If you need dynamic and complex renaming, the “Dictionary Mapping” method is the most suitable.

Remember to consider whether you want to modify the original data frame in place or create a new one with the renamed columns. Your choice should be based on your data manipulation workflow and requirements.

Python for Data Science

Check this Beginners’s Guide to Learn Pandas Series and DataFrames.

If you want us to continue writing such tutorials, support us by sharing this post on your social media accounts like Facebook / Twitter. This will encourage us and help us reach more people.

Share This Article
Subscribe
Notify of
guest

0 Comments
Newest
Oldest
Inline Feedbacks
View all comments