Автоматическое преобразование данных из float в int при сохранении кадра данных в виде csv-файла с использованием to_csv в python - PullRequest
0 голосов
/ 05 октября 2019

Я пытаюсь сохранить свой фрейм данных в виде csv-файла с двумя столбцами ID и Target. Я хочу, чтобы целевым столбцом был тип данных с плавающей запятой, т. Е. 1,0, 0,0 вместо 1 или 0. И я создал фрейм данных этих значений, и мой столбец Target имеет плавающий тип. Но когда я сохраняю этот фрейм данных в CSV-файл, используя to_scv (), столбец «Target» в CSV-файле автоматически преобразуется в тип данных int, то есть 1 и 0. Я сделал следующее

>>> submission["Target"] = submission["Target"].astype(float)
>>> submission.to_csv("test.csv", index=False)

enter image description here Выходной CSV-файл:

enter image description here

Ожидаемый вывод столбца Target в CSV-файле должен был составлять 1,0 или 0,0, но фактический вывод1 или 0

1 Ответ

1 голос
/ 05 октября 2019

pd.to_csv выводит правильный тип. Я предполагаю, что программа, которую вы используете для отображения файла CSV, автоматически форматирует содержимое ячейки и, следовательно, не отображает .0 s.

>>> import pandas as pd
>>> df = pd.DataFrame([{'id': 0, 'Target': 0.0}, {'id': 1, 'Target': 1.0}])
>>> fname = 'out.csv'
>>> df.to_csv(fname, index=False)
>>> with open(fname) as fh:
...     columns = fh.readline().strip().split(',')
...     rows = [dict(zip(columns, row.strip().split(','))) for row in fh.readlines()]
>>> print(rows)
[{'Target': '0.0', 'id': '0'}, {'Target': '1.0', 'id': '1'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...