Преобразование общего формата в числовой формат - PullRequest
0 голосов
/ 11 июля 2020

введите описание изображения здесь

Как преобразовать это число из общего формата в числовой формат при экспорте to_csv в Python

1 Ответ

0 голосов
/ 11 июля 2020

По умолчанию числа, которые меньше 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"
...