将小数格式化为列中的百分比

时间:2017-08-31 20:48:40

标签: python pandas format series

我们说我有以下pandas DataFrame:

df = pd.DataFrame({'name': ['Johnny', 'Brad'], 'rating': [1.0, 0.9]})

我想将rating列从小数转换为字符串的百分比(例如1.0'100%')。以下工作正常:

def decimal_to_percent_string(row):
    return '{}%'.format(row['rating'] * 100)

df['rating'] = df.apply(func=decimal_to_percent_string, axis=1)

这对我来说效率非常低,因为它将函数应用于整个DataFrame,这并不理想,因为我的DataFrame非常大。有更好的方法吗?

3 个答案:

答案 0 :(得分:2)

使用pandas的广播业务:

df.rating = (df.rating * 100).astype(str) + '%'
df 
     name  rating
0  Johnny  100.0%
1    Brad   90.0%

或者,使用df.muldf.add

df.rating = df.rating.mul(100).astype(str).add('%')
df
     name  rating
0  Johnny  100.0%
1    Brad   90.0%

答案 1 :(得分:0)

df['rating'] = df['rating'].mul(100).astype(int).astype(str).add('%')
print(df)

输出:

     name rating
0  Johnny   100%
1    Brad    90%

答案 2 :(得分:-1)

试试这个:

df['rating'] = pd.Series(["{0:.2f}%".format(val*100) for val in df['rating']], index = df.index)
print(df)

输出结果为:

     name    rating
0   Johnny   100.00%
1   Brad     90.00%