在Python中向数据框列添加百分号

时间:2016-02-26 21:21:42

标签: python string pandas dataframe

我一直试图在我的数据框中为列添加百分号,但无济于事。有人会有任何想法吗?

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

我做了很多尝试,但似乎没有任何结果。这是一次失败的尝试:

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

3 个答案:

答案 0 :(得分:13)

使用astype

dtype投射到str
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%

您尝试将该列转换为Series的字符串化版本:

In [12]:
str(df['Grade'])

Out[12]:
'0    82\n1    38\n2    55\n3    19\n4    33\nName: Grade, dtype: int32'

答案 1 :(得分:1)

你也可以这样做:

df['Percent'] = df['Grade'].apply( lambda x : str(x) + '%')

答案 2 :(得分:1)

我认为最简单的方法是:

df['Percent'] = df['Grade'].map("{:,.2f}%".format)