2016-09-26 4 views
1

파이썬은 부동 소수점에 재미있는 일을하는 것처럼 보입니다. 입력에서 다른 부동 소수점 숫자를 생성합니다. 부동 소수점을 입력과 동일하게 유지하고 싶습니다.입력 출력 부동 소수점 문제 파이썬

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 

(210) 그리고 난 그냥 단순히 행을 걸러 내 스크립트를 실행할 때 내가 원하지 않는 :

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) 

'RESULTS.TXT'파일이 입력으로 동일 하 이상한 부동 번호를 포함,이해야 부동 소수점을 입력으로 출력하는 방법이지만 온라인에서 관련 주제를 찾을 수 없습니다.

+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

이것은입니다 단순히 팬더가 표시 할 소수점 이하 자릿수의 기본 정밀도를 설정하기 때문입니다. – roganjosh

+0

숫자 값을 문자열로 변환하는 것은 항상 좋은 생각은 아닙니다. 특히, Pandas는 dtype이'object' 인 NumPy 배열의 문자열 항목을 DataFrame에 저장합니다. 따라서 'DataFrame'에 대한 저장소 요구 사항이 폭발합니다 (배정 밀도 부동 소수점 당 8 바이트에서 문자열 항목 당 60 바이트 이상으로 증가). 대형 DataFrames의 성능에 중요한 영향을줍니다. –