По умолчанию числа, которые меньше 1e16, выводятся полностью в течение Pandas to_csv()
, но в научной c нотации около 1e16.
import pandas as pd
df = pd.DataFrame([1230000000000000, 12300000000000000, 1.23e+15, 1.23e+16])
df.to_csv('test.csv', index=False, header=False)
Производит
1230000000000000.0
1.23e+16
1230000000000000.0
1.23e+16
Вы можете управлять форматом с помощью параметра float_format
, который преобразует их в строки перед выводом:
df.to_csv('test.csv', index=False, header=False, float_format='%.0f')
Вывод:
1230000000000000
12300000000000000
1230000000000000
12300000000000000
Однако, как отмечали другие в комментариях, вам нужно быть осторожным при просмотре файла .csv, поскольку Excel по умолчанию переформатирует его для отображения. Вы можете использовать любой текстовый редактор, чтобы проверить формат файла .csv как есть.
Как упоминалось выше, использование float_format
преобразует числа с плавающей точкой в строки, поэтому, если вы хотите гарантировать, что они будут обрабатываться как строки в выводе, вы можете изменить принудительно, чтобы они выводились в кавычках с помощью quoting=csv.QUOTE_NONNUMERIC
, поэтому:
import csv
df.to_csv('test.csv', index=False, header=False, float_format='%.0f', quoting=csv.QUOTE_NONNUMERIC)
Теперь вывод:
"1230000000000000"
"12300000000000000"
"1230000000000000"
"12300000000000000"