Pandas dataframe to_csv() по умолчанию преобразует строку «1» в «1.0»

Pandas dataframe to_csv() по умолчанию выполняет нежелательное преобразование формата.

У меня есть лист Excel, содержащий столбцы с целочисленными значениями, которые относятся к элементам параметров в веб-приложении. Я делаю все возможное, чтобы преобразовать эти целочисленные значения в строки, прежде чем экспортировать их в CSV. Однако, когда я это делаю, to_csv() по-прежнему преобразует «1» в «1.0» и «0» в «0.0». Первый вопрос: как мне предотвратить это от Pandas? И второй вопрос, почему to_excel() НЕ показывает такое поведение. Если я экспортирую свой фрейм данных в Excel, целочисленные значения сохраняются правильно.

Я использую Pandas 0.23.4 в виртуальной среде на Mac OSX Mojave.

Любая помощь приветствуется!

У вас есть NaN/отсутствующие значения в этих столбцах? Если это так, то он преобразует dtype в float.

EdChum 10.04.2019 15:09

Хм, хорошая мысль. Я проверю это. Спасибо!

Ralph 10.04.2019 15:10

Таким образом, вы либо удаляете эти строки, используя .dropna, либо заменяете/заполняете fillna(0) или что-то еще.

EdChum 10.04.2019 15:11

Я не могу их бросить, но, надеюсь, fillna("") сработает. Спасибо за совет.

Ralph 10.04.2019 15:12

df[column].fillna('') работает! Спасибо

Ralph 11.04.2019 09:48
1
5
479
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы обнаружите, что ваши типы изменились на число с плавающей запятой, когда вы изначально думали, что это целое число или все строки, то, скорее всего, у вас отсутствуют значения, такие как NaN, None.

Таким образом, вы можете удалить эти строки, используя dropna:

df[column] = df[column].dropna()

или замените/заполните эти значения:

df[column] = df[column].fillna(some_val)

где some_val — это 0 или любое другое значение.

Это гарантирует, что dtype для этого столбца не будет смешан или преобразован в float.

Другие вопросы по теме