web-dev-qa-db-fra.com

Supprimer certaines chaînes de la colonne entière dans pandas dataframe

J'ai un pandas dataframe df avec le contenu ci-dessous:

  Date          Factor       Expiry         Grade  
0 12/31/1991    2.138766     3/30/1992      -3.33% 
1 10/29/1992    2.031381     2/8/1993       -1.06% 
2 5/20/1993     2.075670     6/4/1993       -6.38% 

Je voudrais supprimer le % caractère de toutes les lignes de la colonne Grade. Le résultat devrait ressembler à ceci:

  Date          Factor     Expiry        Grade  
0 12/31/1991    2.138766   3/30/1992     -3.33 
1 10/29/1992    2.031381   2/8/1993      -1.06 
2 5/20/1993     2.075670   6/4/1993      -6.38 

J'utilise Python v3.6.

7
user3848207

Vous pouvez utiliser le découpage de chaîne, puis convertir en un type numérique via pd.to_numeric :

df['Grade'] = pd.to_numeric(df['Grade'].astype(str).str[:-1], errors='coerce')

La conversion en float est recommandée car une série de chaînes sera conservée dans un type générique et inefficace object, tandis que les types numériques permettent des opérations vectorisées.

3
jpp

En utilisant str.replace fonctionnerait:

df['Grade'] = df['Grade'].str.replace('%', '')
7
Shaido

Pourquoi pas str.rstrip():

df['Grade'] = df['Grade'].str.rstrip('%')
4
U10-Forward

Tant que nous proposons des alternatives, nous pouvons également translate

df.Grade.str.translate(str.maketrans({'%':''})).astype(float) 
2
rafaelc