2015-08-12 7 views
0

Итак, я пытаюсь преобразовать float DataFrame в список (списка) с помощью row.values.tolist() (row был прочитан из файла CSV). Это делает работу довольно ладно, хотя в течение нескольких значений точности в настоящее время затронуты, так, например, вместо 32.337 он выводит 32.336999999999996.Точность с плавающей запятой влияет на преобразование DataFrame в список

С tolist() дает список список и мне нужно работать с списками , Я решил перейти на list(row.values.flatten()), но он вводит проблемы точности почти для любого значения в списке, что только ухудшает его.

Я нашел discussion on Github об этой проблеме, почти 3 года назад, но я не могу найти что-либо еще в актуальном состоянии, и я не знаю, как это преодолеть.

Я пробовал использовать pd.set_option('display.precision',4), так как для большинства значений мне нужно не более четырех значащих цифр, но это тоже не работает (если я использую его правильно).

Есть ли обходной путь для этого?

+1

Как визуальное представление влияет на ваше приложение? –

ответ

0

Как указано в падре, вы не изменяете правильный вариант с помощью . Вместо этого попробуйте:

pd.options.display.float_format = '{:,.3f}'.format 
1

«Потеря точности» вы видите, это связано с тем, что двоичная с плавающей точкой не может точно представлять десятичные дроби, поэтому есть некоторая ошибка округления. Если вы действительно хотите передавать десятичные значения без изменений, вы получите лучшие результаты, используя фактическое десятичное представление ...

К сожалению, NumPy, кажется, не предоставляет никаких десятичных типов данных, которые вы можете использовать.

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