2017-06-10 7 views
0

私は3列のデータセットを持っています。 1行目のコードでは、 '%'を空の値に置き換えます。 2行目では、international_students列の文字列値をfloatに変換します。データセットを文字列から浮動小数点への変換エラー

コードを1回実行するとすべてが有効です。ただし、コードを2回実行すると、「pandasでnp.object_dtypeを使用する文字列値で.strアクセサのみを使用できます」というエラーが表示されます。 私は、それはすでに列がフロートになっているからだと思います。

エラーを発生させずに複数回実行できるようにするにはどうすればよいですか?

df = pd.DataFrame({'university': ['harvard', 'cambridge', 'GT'], 
       'international_students': ['28%', '33%', '55%'], 
       index=['0', '1', '2']}) 

[line1]: df['international_students'] = df['international_students'].str.replace('%', '') 
[line2]: df['international_students'] = df['international_students'].astype(np.float) 

答えて

1

一度あなたのコードを実行した後、あなたはすでにnp.floatに値を変換してきたので、予想通り間違いとして、失敗します再びstr.replaceを実行していますよ。

これらの操作を複数回実行する場合は、df.copy()を使用してデータのコピーを作成することをおすすめします。

original_df = pd.DataFrame({'university': ['harvard', 'cambridge', 'GT'], 
       'international_students': ['28%', '33%', '55%']}, 
       index=['0', '1', '2']) 

# use this copy for your operations involving using the international_student field 
# as floats 
odf_cp1 = original_df.copy() 
odf_cp1['international_students'] = odf_cp1['international_students'].str.replace('%', '') 
odf_cp1['international_students'] = odf_cp1['international_students'].astype(np.float) 
+0

あなたにオネルをありがとうございます。今分かります。ご協力ありがとうございました。 –

+0

ようこそ。これがあなたの問題を解決したので、これを答えとしてマークしてください。 –

関連する問題