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
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'
I find that the easiest way to do it:
df['Percent'] = df['Grade'].map("{:,.2f}%".format)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With