2017-08-31 1 views
0

Disons que j'ai le dataframe de pandas géants suivants:décimaux Format sous forme de pourcentages dans une colonne

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

Je veux convertir la colonne rating d'une décimale à un pourcentage sous forme de chaîne (par exemple 1.0-'100%'). Les travaux suivants: ok

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

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

Cela semble très inefficace pour moi que la fonction est appliquée à l'ensemble dataframe qui n'est pas idéal parce que mon dataframe est très grande. Y a-t-il une meilleure manière de faire cela?

Répondre

1

Utiliser panda des opérations de diffusion:

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

En variante, en utilisant df.mul et df.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) 

sortie:

 name rating 
0 Johnny 100% 
1 Brad 90% 
-1

Essayez ceci:

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

La sortie est:

 name rating 
0 Johnny 100.00% 
1 Brad  90.00%