2015-02-24 7 views
0

Я работаю с большим разнообразием панд DataFrame, а после записи, а затем перечитывая файл с помощью pandas.DataFrame.read_csv, существует значительное количество наблюдений, которые не соответствуют исходному значению из текстовый файл (или исходный DataFrame). Если я открою текстовый файл в текстовом редакторе и найду конкретное значение, он не будет соответствовать после чтения.Pandas read_csv/to_csv, производя непоследовательные результаты

Пример псевдо-код будет выглядеть примерно как этот

# Hard code value found in text file, no additional digits 
val = -2.631 
# Re-read DataFrame 
df = pd.read_csv('temp.csv', index=False) 
print df.Var1.iloc[10] 
... -2.6310000000000002 
print df.Var1.iloc[10] == val 
... False 

Спасибо.

ответ

0

Проблема заключается в том, как питоны хранят всплывающие окна. Существует некоторая потеря точности, когда введенная строка преобразуется в число в памяти. Вы можете использовать десятичный модуль для точного преобразования строк в плавающие.

>>> val = -2.631 
>>> val 
-2.6309999999999998 
>>> import decimal 
>>> val = decimal.Decimal('-2.631') 
>>> val 
Decimal('-2.631') 
>>> print val 
-2.631 

Я подозреваю, что у Панды есть встроенный способ обработки поплавков, но я не знаю, что это такое.

Смежные вопросы