Add a percent sign to a dataframe column in Python
16,497
Solution 1
Cast the dtype
to str
using astype
:
In [11]:
df['Percent'] = df['Grade'].astype(str) + '%'
df
Out[11]:
Grade Name Percent
0 82 jimmy 82%
1 38 red 38%
2 55 julie 55%
3 19 brad 19%
4 33 oranges 33%
What you tried just converted the column to a stringified version of a Series
:
In [12]:
str(df['Grade'])
Out[12]:
'0 82\n1 38\n2 55\n3 19\n4 33\nName: Grade, dtype: int32'
Solution 2
I find that the easiest way to do it:
df['Percent'] = df['Grade'].map("{:,.2f}%".format)
Solution 3
You can do it like that too :
df['Percent'] = df['Grade'].apply( lambda x : str(x) + '%')
Author by
Kevin
Updated on July 22, 2022Comments
-
Kevin almost 2 years
I've been attempting to add a percent sign to a column in my dataframe but to no avail. Would anyone have any idea?
import pandas as pd names = ('jimmy', 'red', 'julie', 'brad', 'oranges') score = (82, 38 , 55, 19, 33) df = pd.DataFrame({'Name': names, 'Grade': score}) df Out[20]: Grade Name 0 82 jimmy 1 38 red 2 55 julie 3 19 brad 4 33 oranges
I've made numerous attempts but nothing seems to work out. Here is one failed attempt:
df['Percent'] = str(df['Grade']) + '%' df['Percent'] Out[22]: 0 0 82\n1 38\n2 55\n3 19\n4 33\nN... 1 0 82\n1 38\n2 55\n3 19\n4 33\nN... 2 0 82\n1 38\n2 55\n3 19\n4 33\nN... 3 0 82\n1 38\n2 55\n3 19\n4 33\nN... 4 0 82\n1 38\n2 55\n3 19\n4 33\nN... Name: Percent, dtype: object
-
EdChum about 8 years
apply
is not vectorised and will be slow for large dataframes