118

私は次のようなフロート番号のCSVを読んでいます:

Bob,0.085
Alice,0.005

そして、データフレームにインポートし、このデータフレームを新しい場所に書き込みます

df = pd.read_csv(orig)
df.to_csv(pandasfile)

今これpandasfileは持っています:

Bob,0.085000000000000006
Alice,0.0050000000000000001

何が起きましたか?たぶん私はfloat32か何かのような別のタイプにキャストする必要がありますか?

パンダ0.9.0numpy1.6.2を使用しています。

4

2 に答える 2

201

コメントで述べたように、これは一般的な浮動小数点の問題です。

ただし、float_formatキーワード ofto_csvを使用して非表示にすることができます。

df.to_csv('pandasfile.csv', float_format='%.3f')

または、0.0001 をゼロに丸めたくない場合:

df.to_csv('pandasfile.csv', float_format='%g')

あなたに与える:

Bob,0.085
Alice,0.005

出力ファイルで。

の説明については、 Format Specification Mini-Language%gを参照してください。

于 2012-10-14T12:58:04.093 に答える