Add suffix/prefix to column names of Pandas DataFrame
If you have a pandas DataFrame and want to add a suffix or prefix to the column name, there are a couple of ways to do it. In this post, we will describe them one by one.
First, let's create a DataFrame
import pandas as pd
# create a dataframe
df = pd.DataFrame({
'name': ['Rick', 'Carol', 'Daryl', 'Negan'],
'place': ['Alexendria', 'Kingdom', 'Hilltop', 'Saviours'],
'episode': [50, 30, 35, 29]
})
print(df)
╒════╤════════╤════════════╤═══════════╕
│ │ name │ place │ episode │
╞════╪════════╪════════════╪═══════════╡
│ 0 │ Rick │ Alexendria │ 50 │
├────┼────────┼────────────┼───────────┤
│ 1 │ Carol │ Kingdom │ 30 │
├────┼────────┼────────────┼───────────┤
│ 2 │ Daryl │ Hilltop │ 35 │
├────┼────────┼────────────┼───────────┤
│ 3 │ Negan │ Saviours │ 29 │
╘════╧════════╧════════════╧═══════════╛
In the above DataFrame, we want to add a suffix or prefix to the column names. We can use the below methods in order to do that.
Solution 1: Use DataFrame.add_suffix() function to add a suffix to all column names
A DataFrame is a two-dimensional data structure that contains columns and rows. The add_suffix() function is used to add a suffix to all column names in a DataFrame. This function is useful when we want to add a specific character to all column names in a DataFrame, such as an underscore "_".
Code example
import pandas as pd
# create a dataframe
df = pd.DataFrame({
'name': ['Rick', 'Carol', 'Daryl', 'Negan'],
'place': ['Alexendria', 'Kingdom', 'Hilltop', 'Saviours'],
'episode': [50, 30, 35, 29]
})
# add suffix to each column
df = df.add_suffix('_watch')
print(df)
Output
╒════╤══════════════╤═══════════════╤═════════════════╕
│ │ name_watch │ place_watch │ episode_watch │
╞════╪══════════════╪═══════════════╪═════════════════╡
│ 0 │ Rick │ Alexendria │ 50 │
├────┼──────────────┼───────────────┼─────────────────┤
│ 1 │ Carol │ Kingdom │ 30 │
├────┼──────────────┼───────────────┼─────────────────┤
│ 2 │ Daryl │ Hilltop │ 35 │
├────┼──────────────┼───────────────┼─────────────────┤
│ 3 │ Negan │ Saviours │ 29 │
╘════╧══════════════╧═══════════════╧═════════════════╛
The code example above creates a DataFrame with four columns and four rows. The columns are 'name', 'place', and 'episode'. The rows are labeled 'Rick', 'Carol', 'Daryl', and 'Negan'. The code then adds a suffix to each column header. The suffix is '_watch'.
Solution 2: Add prefix to all column names using add_prefix() function
The Pandas add_prefix() function is used to prefix labels of columns in a DataFrame with a string. The function takes a string as an argument and returns a new DataFrame with the columns labeled with the given string as a prefix.
Syntax
DataFrame.add_prefix('prefix_name')
Code example
import pandas as pd
# create a dataframe
df = pd.DataFrame({
'name': ['Rick', 'Carol', 'Daryl', 'Negan'],
'place': ['Alexendria', 'Kingdom', 'Hilltop', 'Saviours'],
'episode': [50, 30, 35, 29]
})
# add prefix to each column
df = df.add_prefix('pre_')
print(df)
Output
╒════╤════════════╤═════════════╤═══════════════╕
│ │ pre_name │ pre_place │ pre_episode │
╞════╪════════════╪═════════════╪═══════════════╡
│ 0 │ Rick │ Alexendria │ 50 │
├────┼────────────┼─────────────┼───────────────┤
│ 1 │ Carol │ Kingdom │ 30 │
├────┼────────────┼─────────────┼───────────────┤
│ 2 │ Daryl │ Hilltop │ 35 │
├────┼────────────┼─────────────┼───────────────┤
│ 3 │ Negan │ Saviours │ 29 │
╘════╧════════════╧═════════════╧═══════════════╛
The above code example creates a DataFrame with four columns ('name', 'place', 'episode') and four rows of data. It then adds a prefix to each column in the DataFrame. The resulting DataFrame is printed.
If you want to change the names of a few columns then you can read the below articles.
- Change column orders using column names list - Pandas Dataframe
- Reorder dataframe columns using column names in pandas
- Get column names from Pandas DataFrame as a python List
- [Pandas] Add new column to DataFrame based on existing column
- Pandas - Delete,Remove,Drop, column from pandas DataFrame
- Add a new column with data to Pandas Dataframe
- Get a value from DataFrame row using index and column name in pandas