2016-07-13 19 views
0

私はCSVファイルをパンダのデータフレームに読み込んでいます。データを取得するとき、私は元のデータと少し異なる値を得ています。Python Pandasのデータフレームで浮動小数点の不一致を修正するには?

私は、Pythonが小数点以下を表す方法と関係があると考えています。しかし、私はそれを修正/回避するにはどうすればいいですか?

CSVデータ例:

1313331280,10.4,0.779 
1313334917,10.4,0.316 
1313334917,10.4,0.101 
1313340309,10.5,0.15 
1313340309,10.5,1.8 

パンダデータフレーム:

df = pd.read_csv(csv_file_full_path, names=['time','price', 'volume']) 

出力:

ORDERS_DATA_FRAME.iloc[0]['volume'] 

source file value = 0.779 
the pandas output value = 0.77900000000000003 

パンダのデータフレームに読み込まれたときにデータが変更されてきています。修正は何ですか?

+1

[浮動小数点数学は壊れていますか?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken) – jonrsharpe

+0

ここで何かが起こっています。まず、私は数学をしていません。私はパンダのデータフレームに読み込まれたデータを読み込んでいます。次に、Pythonで、Javascriptではなく – Emily

+0

いいえ、まったく同じです。 '0.779' **は浮動小数点数として正確に表現することはできませんので、データフレーム内の*ほぼ*その数字を参照してください。言語は無関係です。例えば、 http://floating-point-gui.de/。また、データフレームはパンダに属していないことに注意してください; o) – jonrsharpe

答えて

0

浮動小数点演算のために問題が発生していますが、カラムの小数点以下の桁数がわかっている場合はround(float_number, number_of_decimals)を使用して通常の値に戻すことができます。または、列を文字列として読み取ってからfloat(float_number_string)を使用してfloatに変換することもできます。

関連する問題