2017-08-31 75 views
0

比方說,我有以下的熊貓數據框:格式的小數位的百分比在一列

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) 

這似乎是非常低效的我,因爲它適用的功能將整個數據框,因爲我的數據框非常大這是不理想的。有一個更好的方法嗎?

回答

1

使用大熊貓廣播業務:

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% 
0
df['rating'] = df['rating'].mul(100).astype(int).astype(str).add('%') 
print(df) 

輸出:

 name rating 
0 Johnny 100% 
1 Brad 90% 
-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%