Rename column name with an index number of the CSV file in Pandas

Pandas provides the columns.values attribute to rename column names by index position. This approach lets you modify column names directly using their integer index instead of their current names.

Creating Sample Data

Let's create a sample DataFrame to demonstrate column renaming ?

import pandas as pd

# Create sample data similar to CSV format
data = {
    'Car': ['BMW', 'Lexus', 'Audi', 'Jaguar', 'Mustang'],
    'Reg_Price': [2500, 3500, 2500, 2000, 2500],
    'Units': [100, 80, 120, 70, 110]
}

dataFrame = pd.DataFrame(data)
print("Original DataFrame:")
print(dataFrame)
Original DataFrame:
       Car  Reg_Price  Units
0      BMW       2500    100
1    Lexus       3500     80
2     Audi       2500    120
3   Jaguar       2000     70
4  Mustang       2500    110

Displaying Column Names

First, let's examine the current column names and their index positions ?

import pandas as pd

data = {
    'Car': ['BMW', 'Lexus', 'Audi', 'Jaguar', 'Mustang'],
    'Reg_Price': [2500, 3500, 2500, 2000, 2500],
    'Units': [100, 80, 120, 70, 110]
}

dataFrame = pd.DataFrame(data)

print("Column names:")
print(dataFrame.columns)
print("\nColumn index positions:")
for i, col in enumerate(dataFrame.columns):
    print(f"Index {i}: {col}")
Column names:
Index(['Car', 'Reg_Price', 'Units'], dtype='object')

Column index positions:
Index 0: Car
Index 1: Reg_Price
Index 2: Units

Renaming Columns by Index

Now we'll rename columns using their index positions with columns.values ?

import pandas as pd

data = {
    'Car': ['BMW', 'Lexus', 'Audi', 'Jaguar', 'Mustang'],
    'Reg_Price': [2500, 3500, 2500, 2000, 2500],
    'Units': [100, 80, 120, 70, 110]
}

dataFrame = pd.DataFrame(data)
print("Before renaming:")
print(dataFrame.columns)

# Rename columns by index position
dataFrame.columns.values[0] = "Car Names"
dataFrame.columns.values[1] = "Registration Cost"
dataFrame.columns.values[2] = "Units Sold"

print("\nAfter renaming:")
print(dataFrame.columns)
print("\nUpdated DataFrame:")
print(dataFrame)
Before renaming:
Index(['Car', 'Reg_Price', 'Units'], dtype='object')

After renaming:
Index(['Car Names', 'Registration Cost', 'Units Sold'], dtype='object')

Updated DataFrame:
  Car Names  Registration Cost  Units Sold
0       BMW               2500         100
1     Lexus               3500          80
2      Audi               2500         120
3    Jaguar               2000          70
4   Mustang               2500         110

Alternative Methods

You can also rename columns using other Pandas methods for comparison ?

import pandas as pd

data = {
    'Car': ['BMW', 'Lexus'],
    'Reg_Price': [2500, 3500],
    'Units': [100, 80]
}

# Method 1: Using rename() with dictionary
df1 = pd.DataFrame(data)
df1 = df1.rename(columns={'Car': 'Car Names', 'Reg_Price': 'Registration Cost'})
print("Method 1 - rename() with dict:")
print(df1.columns.tolist())

# Method 2: Direct assignment of all columns
df2 = pd.DataFrame(data)
df2.columns = ['Car Names', 'Registration Cost', 'Units Sold']
print("\nMethod 2 - Direct assignment:")
print(df2.columns.tolist())

# Method 3: Using columns.values with index
df3 = pd.DataFrame(data)
df3.columns.values[0] = "Car Names"
print("\nMethod 3 - columns.values by index:")
print(df3.columns.tolist())
Method 1 - rename() with dict:
['Car Names', 'Registration Cost', 'Units']

Method 2 - Direct assignment:
['Car Names', 'Registration Cost', 'Units Sold']

Method 3 - columns.values by index:
['Car Names', 'Reg_Price', 'Units']

Conclusion

Use columns.values[index] to rename specific columns by their position. This method is useful when you know the column index but not the exact current name, making it ideal for programmatic column renaming.

Updated on: 2026-03-26T13:35:03+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements