2016-09-26 5 views
1

Pythonは浮動小数点数に面白いことをしているようですが、入力から浮動小数点数を生成します。浮動小数点は入力と同じにしておきたいと思います。入力出力浮動小数点の問題Python

ここで私は小さなテストデータセットを持っている:

import pandas as pd 

df = {'ID': ['H1','H2','H3','H4','H5','H6'], 
     'Length': [72, 72, '', 72, 72,'' ], 
     'AA1': ['C','C','C','C','C','C'], 
     'AA2': ['W','W','W','W','W','W'], 
     'Freq': [0.14532872, 0.141868512,0.138408304, 0.14532872,0.138408304, 0.138408304 ], 
     'M': [-282.0570386,-279.1090993,-276.16116,-282.0570386,-274.7748657,-274.6160337]} 

df = pd.DataFrame(df) 

ように見えるを想定している。

df 
    Out[2]: 
     AA1 AA2  Freq ID  Length   M 
    0 C W 0.14532872 H1  72   -282.0570386 
    1 C W 0.141868512 H2  72   -279.1090993 
    2 C W 0.138408304 H3    -276.16116 
    3 C W 0.14532872 H4  72   -282.0570386 
    4 C W 0.138408304 H5  72   -274.7748657 
    5 C W 0.138408304 H6    -274.6160337 

が、それは実際には、このよう予告では浮動小数点数の違いを探します'Freq'と 'M'列:

df 
Out[2]: 
    AA1 AA2  Freq  ID Length   M 
    0 C W  0.145329 H1  72  -282.057039 
    1 C W  0.141869 H2  72  -279.109099 
    2 C W  0.138408 H3   -276.161160 
    3 C W  0.145329 H4  72  -282.057039 
    4 C W  0.138408 H5  72  -274.774866 
    5 C W  0.138408 H6    -274.616034 

と私は単に私はしたくない行フィルタリングする私のスクリプトを実行します。「RESULTS.TXT」ファイルは入力と同じではありません奇妙な浮動小数点数が含まれてい

import pandas as pd 


df = pd.read_csv('test.txt', sep='\t') 

df2 = df[(df['Length'] != 0) & (df['AA1'] == 'C')& (df['AA2']== 'C')] 

df2.to_csv('results.txt', sep = '\t', index=False) 

を、そこになければなりません入力として浮動小数点数を出力する方法ですが、私は関連するトピックをオンラインで見つけることができませんでした。

+1

これらは同じ数字です。ちょうど丸められています。 [here](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.set_option.html)のドキュメントでは、デフォルトの表示桁数は 'display.precision'の下で6であることを示しています – roganjosh

答えて

0

フロートは奇妙です:https://ece.uwaterloo.ca/~dwharder/NumericalAnalysis/02Numerics/Double/paper.pdf

それは、それらのうちの独特探して動作を確認することも珍しくありません。計算をしていない場合は、最初に文字列に変換することをお勧めします。そうすれば、必要な形式で保存されます。

+0

これはPandasが小数点以下の桁数のデフォルト精度を設定しているためです。 – roganjosh

+0

数値を文字列に変換することは、必ずしも良い考えではありません。特に、Pandasは、dtype 'object'を持つNumPy配列の文字列エントリをDataFrameに格納します。これにより、 'DataFrame'のストレージ要件が爆発的になり(倍精度浮動小数点型のアイテムあたり8バイトから文字列アイテムあたり60バイト以上に)、大きなDataFramesのパフォーマンスに大きな影響を与えます。 –

関連する問題