Панды to_csv теперь неправильно записывают значения - PullRequest
0 голосов
/ 26 июня 2018

Я использую в CSV для сохранения кадра данных, который выглядит следующим образом:

    PredictionIdx   CustomerInterest
0   fe789a06f3  0.654059
1   6238f6b829  0.654269
2   b0e1883ce5  0.666289
3   85e07cdd04  0.664172

, в котором в первом столбце указано значение '0e15826235'. Я записываю этот фрейм данных в csv с помощью pandas to_csv (). Но когда я открываю этот CSV в Google Excel или libreoffice, он показывает 0E в Excel и 0 в libreoffice. Это доставляет мне проблемы во время представления в kaggle. Но один момент, на который следует обратить внимание: когда я читаю тот же CSV-файл, используя pandas read_csv, он корректно показывает указанное выше значение в фрейме данных.

Ответы [ 2 ]

0 голосов
/ 03 июля 2018

Как отмечено в первом комментарии, ошибка возникает из-за вашего выбора редактора. Многие редакторы будут использовать некоторую версию научной нотации, которая читает e (в определенных местах, таких как второй символ) в качестве показателя степени. Например, Excel будет читать его как «основание X, возведенное в степень Y», где X - числа перед e, а Y - числа после e. Это краткое описание научной нотации Excel.

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

В вашем вопросе вы пишете '0e15826235' с одинарными кавычками, указывая, что это может быть строка, но это может быть чем-то, что нужно проверить при записи значений в файл - Excel, а остальные могут этого не знать должен быть строковым литералом.

В общем, проверьте формат значения и подумайте, что ваш «редактор» может «подумать», когда он открывается. В частности, для Excel один символ кавычки в начале строки заставит Excel прочитать его как строку. См. этот ответ .

0 голосов
/ 28 июня 2018

Для меня код ниже работает правильно с таблицами Google:

import pandas as pd
df = pd.DataFrame({'PredictionIdx': ['fe789a06f3',
                                     '6238f6b829',
                                     'b0e1883ce5',
                                     '85e07cdd04'],
                   'CustomerInterest': [0.654059,
                                        0.654269,
                                        0.666289,
                                        0.664172]})

df.to_csv('./test.csv', index = None)

Также CSV очень простой текстовый формат, он не содержит никакой информации о типах данных. Таким образом, вы можете использовать df.to_excel(), как предложил Нихал, или настроить параметры типа столбца в вашей любимой программе просмотра электронных таблиц.

...