web-dev-qa-db-ja.com

pandas dataframeの列全体から特定の文字列を削除します

pandas dataframe dfがあり、その内容は次のとおりです。

  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% 

Grade列のすべての行から%文字を削除してください。結果は次のようになります。

  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 

私はPython v3.6。

7
user3848207

文字列スライシングを使用してから、 pd.to_numeric を使用して数値型に変換できます。

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

一連の文字列は一般的で非効率的なfloat dtypeに保持されるため、objectへの変換が推奨されますが、数値型ではベクトル化された操作が許可されます。

3
jpp

str.replace 動作します:

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

なぜstr.rstrip()

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

選択肢を提供している限り、translateもできます。

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