Увеличивается количество знаков после запятой при использовании 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: ---------------------------------------------------> ^^^^^^^^^^^^^^^^^^^