#1 Data Analytics Program in India
₹2,499₹1,499Enroll Now
5 min read min read

Renaming Columns

Learn to rename DataFrame columns using various methods

Renaming Columns

Rename Single Column

code.py
import pandas as pd

df = pd.DataFrame({
    'name': ['John', 'Sarah', 'Mike'],
    'sal': [50000, 60000, 55000],
    'yrs': [3, 5, 4]
})

df_new = df.rename(columns={'sal': 'Salary'})
print(df_new)

Output:

name Salary yrs 0 John 50000 3 1 Sarah 60000 5 2 Mike 55000 4

Original df unchanged.

Rename Multiple Columns

code.py
df_new = df.rename(columns={
    'name': 'Name',
    'sal': 'Salary',
    'yrs': 'Years'
})
print(df_new)

Rename in Place

code.py
df.rename(columns={'sal': 'Salary'}, inplace=True)
print(df)

Modifies original DataFrame.

Rename All Columns

code.py
df.columns = ['Name', 'Salary', 'Years']
print(df)

Must provide name for every column.

Using List

code.py
new_names = ['Employee_Name', 'Employee_Salary', 'Years_Experience']
df.columns = new_names
print(df)

Convert to Lowercase

code.py
df.columns = df.columns.str.lower()
print(df)

All column names become lowercase.

Convert to Uppercase

code.py
df.columns = df.columns.str.upper()
print(df)

Replace Spaces

code.py
df = pd.DataFrame({
    'First Name': ['John', 'Sarah'],
    'Last Name': ['Doe', 'Smith']
})

df.columns = df.columns.str.replace(' ', '_')
print(df)

Output: ['First_Name', 'Last_Name']

Strip Whitespace

code.py
df = pd.DataFrame({
    ' Name ': ['John'],
    'Salary ': [50000]
})

df.columns = df.columns.str.strip()
print(df.columns.tolist())

Removes leading/trailing spaces.

Practice Example

The scenario: Clean messy column names from CSV.

code.py
import pandas as pd

employees = pd.DataFrame({
    'emp id': [101, 102, 103],
    'First Name': ['John', 'Sarah', 'Mike'],
    'LAST_NAME': ['Doe', 'Smith', 'Johnson'],
    'Sal (USD)': [50000, 65000, 55000],
    'yrs_exp': [3, 7, 4],
    'dept ': ['Sales', 'IT', 'HR']
})

print("Original columns:")
print(employees.columns.tolist())
print()

print("Step 1: Strip whitespace:")
employees.columns = employees.columns.str.strip()
print(employees.columns.tolist())
print()

print("Step 2: Replace spaces with underscore:")
employees.columns = employees.columns.str.replace(' ', '_')
print(employees.columns.tolist())
print()

print("Step 3: Convert to lowercase:")
employees.columns = employees.columns.str.lower()
print(employees.columns.tolist())
print()

print("Step 4: Clean specific names:")
employees = employees.rename(columns={
    'emp_id': 'employee_id',
    'sal_(usd)': 'salary',
    'yrs_exp': 'years_experience',
    'dept': 'department'
})
print(employees.columns.tolist())
print()

print("Final clean DataFrame:")
print(employees)

Add Prefix

code.py
df = df.add_prefix('emp_')
print(df.columns.tolist())

Output: ['emp_Name', 'emp_Salary', 'emp_Years']

Add Suffix

code.py
df = df.add_suffix('_2024')
print(df.columns.tolist())

Output: ['Name_2024', 'Salary_2024', 'Years_2024']

Rename with Function

code.py
df = df.rename(columns=lambda x: x.upper())
print(df.columns.tolist())

Applies function to each column name.

Custom function:

code.py
def clean_name(col):
    return col.lower().replace(' ', '_')

df = df.rename(columns=clean_name)

Rename by Position

code.py
df = pd.DataFrame([[1, 2, 3]], columns=['A', 'B', 'C'])

col_names = list(df.columns)
col_names[1] = 'NewB'
df.columns = col_names
print(df)

Changes second column to 'NewB'.

Rename Index

Not columns, but rows.

code.py
df = df.rename(index={0: 'First', 1: 'Second'})
print(df)

Snake Case Conversion

code.py
def to_snake_case(name):
    import re
    return re.sub(r'(?<!^)(?=[A-Z])', '_', name).lower()

df.columns = [to_snake_case(col) for col in df.columns]

Converts 'FirstName' to 'first_name'.

Check Before Rename

code.py
if 'sal' in df.columns:
    df = df.rename(columns={'sal': 'Salary'})

Get Column Name Mapping

code.py
old_names = ['name', 'sal', 'yrs']
new_names = ['Name', 'Salary', 'Years']

rename_dict = dict(zip(old_names, new_names))
df = df.rename(columns=rename_dict)

Rename Duplicate Columns

code.py
df = pd.DataFrame([[1, 2, 3]], columns=['A', 'A', 'B'])

cols = pd.Series(df.columns)
for dup in cols[cols.duplicated()].unique():
    cols[cols == dup] = [dup + '_' + str(i) for i in range(sum(cols == dup))]

df.columns = cols
print(df.columns.tolist())

Output: ['A_0', 'A_1', 'B']

Remove Special Characters

code.py
df.columns = df.columns.str.replace('[^a-zA-Z0-9_]', '', regex=True)
print(df.columns.tolist())

Keeps only letters, numbers, underscores.

Standardize Format

code.py
def standardize(col):
    col = col.strip()
    col = col.lower()
    col = col.replace(' ', '_')
    col = col.replace('-', '_')
    return col

df.columns = [standardize(col) for col in df.columns]

Undo Rename

Save original names first.

code.py
original_columns = df.columns.tolist()
df.columns = ['A', 'B', 'C']

# Later restore
df.columns = original_columns

Key Points to Remember

rename(columns=dict) renames specific columns. Original unchanged unless inplace=True.

df.columns = list assigns new names to all columns at once.

str methods work on columns: .lower(), .upper(), .replace(), .strip().

add_prefix() and add_suffix() quickly add text to all column names.

Lambda functions and custom functions work with rename() for complex transformations.

Common Mistakes

Mistake 1: Wrong number of names

code.py
df.columns = ['A', 'B']  # Error if df has 3 columns!
# Must provide name for every column

Mistake 2: Not assigning result

code.py
df.rename(columns={'sal': 'Salary'})  # Doesn't change df!
df = df.rename(columns={'sal': 'Salary'})  # Correct
# OR
df.rename(columns={'sal': 'Salary'}, inplace=True)

Mistake 3: Renaming non-existent column

code.py
df.rename(columns={'Sallary': 'Salary'})  # No error, just ignored
print(df.columns.tolist())  # Check names first

Mistake 4: Case sensitivity

code.py
df.rename(columns={'name': 'Name'})  # Won't work if column is 'Name'
# Column names are case-sensitive!

Mistake 5: Forgetting str accessor

code.py
df.columns = df.columns.lower()  # Error!
df.columns = df.columns.str.lower()  # Correct

What's Next?

You now know how to rename columns. Next, you'll learn about working with indexes - setting, resetting, and using DataFrame indexes effectively.

SkillsetMaster - AI, Web Development & Data Analytics Courses