我们说我有以下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非常大。有更好的方法吗?
答案 0 :(得分:2)
使用pandas的广播业务:
df.rating = (df.rating * 100).astype(str) + '%'
df
name rating
0 Johnny 100.0%
1 Brad 90.0%
或者,使用df.mul
和df.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%