Как изменить тип колонки float в int?
Если у вас в данных есть NaN , то int никак не получится — NaN есть только во float . Хотя в новейших версиях Pandas вроде собирались сделать int с NaN . Хотите сделать int — заполните сначала NaN каким-нибудь значением, и тогда всё получится.
24 фев 2021 в 11:11
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
In [122]: df = pd.DataFrame() In [123]: df Out[123]: a 0 1.0 1 NaN 2 3.0 In [124]: df.dtypes Out[124]: a float64 dtype: object In [125]: df = df.astype() In [126]: df.dtypes Out[126]: a Int64 dtype: object In [127]: df Out[127]: a 0 1 1 2 3
Отслеживать
ответ дан 24 фев 2021 в 11:27
MaxU — stand with Ukraine MaxU — stand with Ukraine
149k 12 12 золотых знаков 59 59 серебряных знаков 133 133 бронзовых знака
А, уже встроили, это хорошо. Попробовал на колабе — работает )
24 фев 2021 в 11:49
Если в вашем датафрейме нет явных чисел с ненулевой дробной частью (не считая nan), например:
a 0 1.0 1 2.0 2 3.0 3 NaN 4 4.0 5 5.0
то в pandas версии выше (если не ошибаюсь) 1.2.2, можно сделать простое приведение вида:
df = df.convert_dtypes()
a 0 1 1 2 2 3 3 4 4 5 5 RangeIndex: 6 entries, 0 to 5 Data columns (total 1 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 a 5 non-null Int64 dtypes: Int64(1)
Отслеживать
ответ дан 24 фев 2021 в 11:59
26k 4 4 золотых знака 21 21 серебряный знак 36 36 бронзовых знаков
Можешь просто залочить 1 колонку и присвоить ей тип данных используй библиотеку пандас
import pandas as pd df = pandas.DataFrame(mongo_docs) df["имя столбца"] = pd.to_numeric(df["имя столбца"])
если несколько столбцов то
df[["account", "binance_id"]] = df[["account", "binance_id"]].apply(pd.to_numeric)
если у вас есть NaN то просто их уберите с помощью
df2 = df[pd.notnull(df['Имя столбца в котором есть NAN'])]
А потом уже делайте его целым
Как превратить float в int в Python: простой способ с использованием функции int()
В Python есть несколько способов превратить число с плавающей запятой (float) в целое число (int). 1. Используйте встроенную функцию int() . Она преобразует число в целое число, округляя его вниз:
num_float = 3.14 num_int = int(num_float) print(num_int) # Вывод: 3
2. Используйте функцию math.floor() из модуля math . Она округляет число вниз до ближайшего целого числа:
import math num_float = 3.14 num_int = math.floor(num_float) print(num_int) # Вывод: 3
3. Используйте функцию math.ceil() из модуля math . Она округляет число вверх до ближайшего целого числа:
import math num_float = 3.14 num_int = math.ceil(num_float) print(num_int) # Вывод: 4
Выберите подходящий способ в зависимости от того, как вы хотите округлить число с плавающей запятой.
Детальный ответ
Как превратить float в int в Python
Перед нами вопрос о том, как преобразовать числовое значение с плавающей запятой (float) в целое число (int) в языке программирования Python. В этой статье мы рассмотрим несколько подходов и дадим примеры кода, чтобы полностью ответить на этот вопрос.
1. Использование функции int()
Простейший способ преобразования float в int в Python — использовать функцию int(). Эта функция преобразует число в переданный аргумент в целое значение, отбрасывая десятичную часть.
float_value = 3.14 int_value = int(float_value) print(int_value) # Output: 3
В приведенном выше примере мы преобразовываем число 3.14 типа float в число 3 типа int с помощью функции int(). Результатом будет целое число 3, отброшенная десятичная часть числа 3.14.
2. Использование оператора //
Еще один способ преобразования float в int — использовать оператор «//». Этот оператор выполняет целочисленное деление, возвращая частное без остатка.
float_value = 3.14 int_value = float_value // 1 print(int_value) # Output: 3
В приведенном выше примере мы используем оператор «//» для деления числа 3.14 на 1. В результате получаем целое число 3, так как десятичная часть отбрасывается. Этот способ также применим для любых других значений с плавающей запятой.
3. Использование функции math.floor()
Для округления float в меньшую сторону до ближайшего целого числа можно использовать функцию math.floor() из модуля math. Эта функция возвращает наибольшее целое число, которое меньше или равно заданному значению.
import math float_value = 3.14 int_value = math.floor(float_value) print(int_value) # Output: 3
В приведенном выше примере мы импортируем модуль math и используем функцию math.floor() для округления числа 3.14 в меньшую сторону до ближайшего целого числа. Результатом будет целое число 3.
4. Использование функции round()
Если вам необходимо округлить число с плавающей запятой до ближайшего целого числа с правилами округления, вы можете использовать функцию round().
float_value = 3.14 int_value = round(float_value) print(int_value) # Output: 3
В приведенном выше примере мы используем функцию round() для округления числа 3.14 до ближайшего целого числа. Результатом будет целое число 3. Теперь у вас есть несколько способов преобразовать float в int в Python. Вы можете выбрать подход, который лучше всего подходит для вашей конкретной задачи. Учтите, что при преобразовании float в int может происходить потеря точности, поэтому будьте внимательны при выборе метода.
Преобразования типов с плавающей запятой
Если значение с плавающей запятой преобразуется в другой тип с плавающей запятой и при этом может быть точно представлено в результирующем типе, оно не изменяется. Если исходное значение является числовым, но при этом не может быть представлено точно, результатом будет следующее более высокое или низкое значение, которое может быть представлено. Диапазон типов с плавающей запятой см. в разделе Ограничения констант с плавающей запятой.
При преобразовании значения с плавающей запятой в целочисленный тип оно сначала усекается путем удаления дробной части. Если усеченное значение может быть представлено в результирующем типе, результатом должно быть это значение. Если значение не может быть представлено, результат не определен.
Блок, относящийся только к системам Microsoft
Компиляторы Майкрософт используют представление binary32 согласно IEEE-754 для значений типа float и представление binary64 для long double и double . Так как для long double и double используется одно и то же представление, они имеют одинаковый диапазон и точность.
Когда компилятор преобразует число типа double или long double с плавающей запятой в значение float , он округляет результат в соответствии с элементами управления среды с плавающей запятой, значение по умолчанию которых — «округлить до ближайшего числа с привязкой к четному». Если числовое значение слишком велико или слишком мало для представления в виде числового значения float , результат преобразования будет положительной или отрицательной бесконечностью в соответствии со знаком исходного значения, и возникает исключение переполнения, если оно включено.
Для преобразования в целочисленный тип меньше long сначала значение преобразуется в тип long , а затем в результирующий тип.
При преобразовании в целочисленные типы не меньше long для значения, которое слишком велико или слишком мало для представления в результирующем типе, может возвращаться любое из следующих значений:
- Результатом может быть значение-метка, то есть представимое значение, максимально удаленное от нуля. Для типов со знаком это наименьшее представимое значение (0x800. 0). Для типов без знака это наибольшее представимое значение (0xFF. F).
- Результат может дополняться, то есть значение, которое слишком велико для представления, преобразуется в наибольшее представимое значение, а значение, которое слишком мало для представления, преобразуется в наименьшее представимое значение. Одно из этих двух значений также используется в качестве значения-метки.
- При преобразовании в тип unsigned long или unsigned long long значения, выходящего за пределы соответствующего диапазона, результатом может быть некоторое значение, отличающееся от наибольшего или наименьшего представимого. Будет ли результат значением-меткой, дополненным значением или ни тем ни другим, зависит от параметров компилятора и целевой архитектуры. В будущих версиях компилятора может возвращаться дополненное значение или значение-метка, даже если в предыдущих версиях оно не возвращалось.
Завершение блока, относящегося только к системам Майкрософт
В следующей таблице перечислены преобразования из типов с плавающей запятой.
Таблица преобразования типов с плавающей запятой
Исходный тип | Кому | Метод |
---|---|---|
float | char | Преобразование в long , затем преобразование long в char |
float | short | Преобразование в long , затем преобразование long в short |
float | int | Усечение до десятичной запятой. Если результат слишком велик для представления в качестве значения int , результат не определен. |
float | long | Усечение до десятичной запятой. Если результат слишком велик для представления в качестве значения long , результат не определен. |
float | long long | Усечение до десятичной запятой. Если результат слишком велик для представления в качестве значения long long , результат не определен. |
float | unsigned char | Преобразование в long , затем преобразование long в unsigned char |
float | unsigned short | Преобразование в long , затем преобразование long в unsigned short |
float | unsigned | Усечение до десятичной запятой. Если результат слишком велик для представления в качестве значения unsigned , результат не определен. |
float | unsigned long | Усечение до десятичной запятой. Если результат слишком велик для представления в качестве значения unsigned long , результат не определен. |
float | unsigned long long | Усечение до десятичной запятой. Если результат слишком велик для представления в качестве значения unsigned long long , результат не определен. |
float | double | Представление в качестве значения double . |
float | long double | Представление в качестве значения long double . В MSVC long double и double имеют одно и то же представление. |
double | char | Преобразование в float , затем преобразование float в char |
double | short | Преобразование в float , затем преобразование float в short |
double | int | Усечение до десятичной запятой. Если результат слишком велик для представления в качестве значения int , результат не определен. |
double | long | Усечение до десятичной запятой. Если результат слишком велик для представления в качестве значения long , результат не определен. |
double | unsigned char | Преобразование в long , затем преобразование long в unsigned char |
double | unsigned short | Преобразование в long , затем преобразование long в unsigned short |
double | unsigned | Усечение до десятичной запятой. Если результат слишком велик для представления в качестве значения unsigned , результат не определен. |
double | unsigned long | Усечение до десятичной запятой. Если результат слишком велик для представления в качестве значения unsigned long , результат не определен. |
double | unsigned long long | Усечение до десятичной запятой. Если результат слишком велик для представления в качестве значения unsigned long long , результат не определен. |
double | float | Представление в качестве значения float . Если значение double невозможно точно представить с типом float , происходит потеря точности. |
double | long double | Значение long double рассматривается как double . |
Преобразования из типа long double производятся так же, как из типа double .
Как преобразовать Float в Int в Python?
Преобразование значения с плавающей запятой в int выполняется преобразованием типа, которое является явным методом преобразования операнда в определенный тип. Однако следует отметить, что такой тип преобразования может иметь тенденцию быть с потерями (потеря данных). Преобразование значения типа int, например 2, в число с плавающей запятой приведет к 2.0 , такие типы преобразования безопасны, так как не будет потери данных, но преобразование 3.4 в значение int приведет к 3, что приведет к преобразованию с потерями.
Примеры:
Ввод: 3.3 Выход: 3 Ввод: 5,99 Выход: 5
Метод 1: преобразование с помощью int ():
Чтобы преобразовать значение с плавающей запятой в int, мы используем встроенную функцию int () , эта функция обрезает значения после десятичной точки и возвращает только целую / целую часть числа.
Syntax: int(x)
Return: integer value
Example 1: Number of type float is converted to a result of type int.