2016-12-07 22 views
0

私は 'distance'という列のpandasデータフレームを持っていて、データ型は 'float64'です。pandasデータフレームの浮動小数点数をintに変換する

Distance 
14.827379 
0.754254 
0.2284546 
1.833768 

これらの数値を整数(14,0,0,1)に変換したいと考えています。私はこれで試しましたが、 "ValueError:NAを整数に変換できません"というエラーが表示されます。

df['distance(kmint)'] = result['Distance'].astype('int') 

何か助けていただけたら幸いです!私はこれを使用してのNaNのデータフレームからの除外

+1

intに変換するハックがあります。しかし、整数列のNaN担当者が不足しているのは、pandas ["gotcha"](http://pandas.pydata.org/pandas-docs/stable/gotchas.html#support-for-integer-na) – Zero

+0

重複している可能性があります[Pandasのintsに浮動小数点を変換するのですか?](http://stackoverflow.com/questions/21291259/convert-floats-to-ints-in-pandas) – mk2

答えて

1

result = result[np.isfinite(result['distance(km)'])] 

その後、私はintにfloat型から変換することができました。

0

代替の方法は、データのインポートおよびクリーニングプロセスの一部としてNaN値を変換することです。より一般化された解決策には、na_valuesフラグを設定することによってread_tableコマンドでNaNである値を指定することが含まれます。あなたが確認したいのは、あなたのフィールドの1つに1.5kmのようないくつかのmalforedデータがないことです。これはNaN値として取り上げられます。データフレームが読み込まれるとNaN値が適切に識別されると

pandas.read_table(..., na_values=None, keep_default_na=True, na_filter=True, ....) 

その後、あなたはゼロか、あなたの距離として特定の値に代入するfillnaメソッドを使用することができます。 最後に、notnullisfiniteを使用して整数を整数に変換するのが最善でしょう。

関連する問題