pandas vs sasdataset, значения являются правильными - PullRequest
0 голосов
/ 14 января 2020

Перед чтением в pandas данные используются в наборе данных sasdataset. Мои данные выглядят как

SNYDJCM--integer
740.19999981

После считывания в pandas мои данные изменяются, как показано ниже

SNYDJCM--converting to float 
740.200000

Как получить то же значение после считывания в pandas Dataframe Выполнены следующие шаги:

1)

import pandas as pd 

2)

pd.read_sas(path,format='sas7bdat',encoding='iso-8859-1')

Нужна ваша помощь

Ответы [ 2 ]

0 голосов
/ 14 января 2020

Первая 740.19999981 не является целым числом 740 будет ближайшим целым числом. Но также, когда вы округлите 740.19999981 до 6 цифр, вы получите 740.200000. Я бы предложил распечатать с более высокой точностью и посмотреть, действительно ли это изменилось.

print("%.12f"%(x,))
0 голосов
/ 14 января 2020

Попробуйте импортировать SAS7BDAT и преобразуйте файл перед чтением:

from sas7bdat import SAS7BDAT
SAS7BDAT('FILENAME.sas7bdat')
df = pd.read_sas('FILENAME.sas7bdat',format='sas7bdat')

или используйте его для непосредственного чтения файла:

from sas7bdat import SAS7BDAT
sas_file = SAS7BDAT('FILENAME.sas7bdat')
df = sas_file.to_data_frame()

или используйте pyreadstat для чтения файл:

import pyreadstat
df, meta = pyreadstat.read_sas7bdat('FILENAME.sas7bdat')
...