You can use one of the following three methods to rename columns in a pandas DataFrame:
Method 1: Rename Specific Columns
df.rename(columns = {'old_col1':'new_col1', 'old_col2':'new_col2'}, inplace = True)
Method 2: Rename All Columns
df.columns = ['new_col1', 'new_col2', 'new_col3', 'new_col4']
Method 3: Replace Specific Characters in Columns
df.columns = df.columns.str.replace('old_char', 'new_char')
The following examples show how to use each of these methods in practice.
Related: How to Get Column Names in Pandas (3 Methods)
Method 1: Rename Specific Columns
The following code shows how to rename specific columns in a pandas DataFrame:
import pandas as pd #define DataFrame df = pd.DataFrame({'team':['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'points': [25, 12, 15, 14, 19, 23, 25, 29], 'assists': [5, 7, 7, 9, 12, 9, 9, 4], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) #list column names list(df) ['team', 'points', 'assists', 'rebounds'] #rename specific column names df.rename(columns = {'team':'team_name', 'points':'points_scored'}, inplace = True) #view updated list of column names list(df) ['team_name', 'points_scored', 'assists', 'rebounds']
Notice that the ‘team’ and ‘points’ columns were renamed while all other column names remained the same.
Method 2: Rename All Columns
The following code shows how to rename all columns in a pandas DataFrame:
import pandas as pd #define DataFrame df = pd.DataFrame({'team':['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], 'points': [25, 12, 15, 14, 19, 23, 25, 29], 'assists': [5, 7, 7, 9, 12, 9, 9, 4], 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) #list column names list(df) ['team', 'points', 'assists', 'rebounds'] #rename all column names df.columns = ['_team', '_points', '_assists', '_rebounds'] #view updated list of column names list(df) ['_team', '_points', '_assists', '_rebounds']
Note that it’s faster to use this method when you want to rename most or all of the column names in the DataFrame.
Method 3: Replace Specific Characters in Columns
The following code shows how to replace a specific character in each column name:
import pandas as pd #define DataFrame df = pd.DataFrame({'$team':['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], '$points': [25, 12, 15, 14, 19, 23, 25, 29], '$assists': [5, 7, 7, 9, 12, 9, 9, 4], '$rebounds': [11, 8, 10, 6, 6, 5, 9, 12]}) #list column names list(df) ['team', 'points', 'assists', 'rebounds'] #rename $ with blank in every column name df.columns = df.columns.str.replace('$', '') #view updated list of column names list(df) ['team', 'points', 'assists', 'rebounds']
Notice that this method allowed us to quickly remove the ‘$’ from each column name.
Additional Resources
The following tutorials explain how to perform other common operations in pandas:
How to List All Column Names in Pandas
How to Sort Columns by Name in Pandas
How to Drop Duplicate Columns in Pandas