Увеличивается количество знаков после запятой при использовании df.to_csv() для вывода DataFrame в CSV файл

Надо прочитать файл, заменить десятичный разделитель с запятой на точку и сохранить в новый файл.

Содержимое файла:

78512;0,756

Считываю в DataFrame:

df = pd.read_csv('111.csv', sep=';', encoding='utf-8', decimal=',', header=None)

Смотрю содержимое DataFrame:

In [56]: df

Out[56]: 0 1 0 78512 0.756

Записываю в файл:

In [57]: df.to_csv('222.csv', sep=';', encoding='utf-8', decimal='.', header=None, index=False)

В результате получаю в итоговом файле:

78512;0.7559999999999999

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

Что я делаю не так?


Ответы (1 шт):

Автор решения: MaxU

Воспользуйтесь параметром float_format:

df.to_csv(r"c:/temp/res.csv", sep=";", index=False, header=None, float_format="%.3f")
#     NOTE: ---------------------------------------------------> ^^^^^^^^^^^^^^^^^^^
→ Ссылка