Проблема не в преобразовании в CSV, а в том, что вы загружаете его в электронную таблицу.Известно, что Excel плохо поддерживает CSV-файлы, и, к сожалению, LibreOffice calc делает все возможное, чтобы эмулировать Excel ...
Он видит число и неправильно конвертирует его в двойное значение.
Демо:
В питоне:
>>> x = 101044874404577281
>>> data = [{"id": x, "str": "foo"}]
>>> fd = io.StringIO()
>>> json.dump(data, fd)
>>> fd.seek(0,0)
0
>>> df = pd.read_json(fd)
>>> print(df)
id str
0 101044874404577281 foo
Хорошо, здесь все хорошо.Давайте продолжим:
>>> df.to_csv('foo.csv', index=False)
Если файл foo.csv открыт в немом текстовом редакторе, если он все еще в порядке:
id,str
101044874404577281,foo
Давайте загрузим это в электронную таблицу:
Позор калькулятору, это помещено в научную нотацию!Давайте использовать обычный дисплей:
Вздох ... он уничтожил последние цифры ...
TL / DR: Этоне является проблемой в Python, ни в пандах, ни даже с файлом CSV, но только с Excel.