Я работал с данными, импортированными из CSV. Панды изменили некоторые столбцы на плавающие, так что теперь числа в этих столбцах отображаются как плавающие точки! Однако мне нужно, чтобы они отображались в виде целых чисел или без запятой. Есть ли способ преобразовать их в целые числа или не отображать запятую?
230
df.col = df.col.astype(int)
df = df.astype(int)
Ответы:
Чтобы изменить вывод float, сделайте это:
источник
df.a = df.a.astype(float)
? Делает ли это копию (не уверен, как используетсяcopy
параметр toastype()
)? В любом случае обновить тип "на месте"?DF.({'200': {'#': 354, '%': 0.9971830985915493}, '302': {'#': 1, '%': 0.0028169014084507044}})
Обратите внимание, что # преобразуется в число с плавающей точкой, и это строки, а не столбцы. потому что каждый изSeries
них может хранить только один единый тип?dtype
? Если это так,dtype
вам нужно создать эти столбцы так,dtype
object
чтобы они допускали смешивание, в противном случае я бы посоветовал просто использовать float, а при сравнении использоватьnp.isclose
Используйте
pandas.DataFrame.astype(<type>)
функцию для управления столбцами dtypes.РЕДАКТИРОВАТЬ:
Для обработки пропущенных значений:
источник
Учитывая следующий кадр данных:
Используя список имен столбцов, измените тип для нескольких столбцов с помощью
applymap()
:Или для одного столбца с
apply()
:источник
ValueError: ('cannot convert float NaN to integer', u'occurred at index <column_name>')
df['C'] = df['C'].dropna().apply(np.int64)
Это быстрое решение, если вы хотите преобразовать больше ваших столбцов из числа
pandas.DataFrame
с плавающей точкой в целое, учитывая также случай, когда вы можете иметь значения NaN.Я попытался с
else x)
иelse None)
, но результат все еще имеет число с плавающей запятой, поэтому я использовалelse ""
.источник
""
ко всем значениям вcol
Расширяя @Ryan G упомянутое использование
pandas.DataFrame.astype(<type>)
метода, можно использоватьerrors=ignore
аргумент, чтобы преобразовать только те столбцы, которые не выдают ошибку, что значительно упрощает синтаксис. Очевидно, следует соблюдать осторожность при игнорировании ошибок, но для этой задачи это очень удобно.Из документов pandas.DataFrame.astype :
источник
источник
Чтобы преобразовать все столбцы с плавающей точкой в int
источник
Вот простая функция, которая будет понижать число с плавающей точкой до наименьшего возможного целочисленного типа, который не теряет никакой информации. Например,
100.0 может быть преобразовано из числа с плавающей точкой в целое число, но 99.9 не может (без потери информации для округления или усечения)
Кроме того, 1.0 может быть
int8
уменьшен до полной потери информации, но наименьший целочисленный тип для 100_000.0int32
Примеры кода:
источник
Столбцы, которые нужно преобразовать в int, могут быть упомянуты в словаре, как показано ниже
источник
источник
astype(int)
уже упоминалось несколько раз. Этот ответ не добавляет ничего нового.