Adding a prefix to column values in Pandas
Start your free 7-days trial now!
Consider the following DataFrame:
df = pd.DataFrame({"A":["a","b"],"B":[4,5]})df
A B0 a 41 b 5
Adding prefix to a single column
To add a prefix to each value in column A
:
df["A"] = "c" + df["A"]df
A B0 ca 41 cb 5
For non-string typed columns, you must first convert its type to string using astype(str)
:
df["B"] = "d" + df["B"].astype(str)df
A B0 a d41 b d5
Adding prefix to multiple columns
To add a prefix to multiple columns:
df[["A","B"]] = "c" + df[["A","B"]].astype(str)df
A B0 ca c41 cb c5
Here, df[["A","B"]]
returns a DataFrame, and we convert the type of all its columns to string
using astype(str)
.
Adding padding to reach a fixed width
Consider the following DataFrame:
df = pd.DataFrame({"A":["aa","b"],"B":[4,55]})df
A B0 aa 41 b 55
Single column
To add a padding to each value in a column until the desired width is reached, use Series' str.pad(~)
method:
df["A"] = df["A"].str.pad(width=3, fillchar="#") # side="left"df
A B0 #aa 41 ##b 55
Note that str.pad(~)
throws an error if all the column values are not of string
type. To pad non-string columns, use astype(str)
to convert them to string
type:
df["B"] = df["B"].astype(str).str.pad(width=3, fillchar="#")df
A B0 aa ##41 b #55
Multiple columns
Consider the following DataFrame:
df = pd.DataFrame({"A":["aa","b"],"B":["5","66"]})df
A B0 aa 51 b 66
The method str.pad(~)
is only available for Series
, and so we cannot pad multiple columns at the same time by simply extracting them as a DataFrame (df[["A","B"]]
).
Instead, we can loop through a list of column labels like so:
columns_to_pad = ["A","B"]for col_label in columns_to_pad: df[col_label] = df[col_label].str.pad(width=3, fillchar="#")df
A B0 #aa ##51 ##b #66