pandas.to_numeric#
-
pandas.to_numeric(arg, errors='raise', downcast=None, dtype_backend=
)[источник]# Преобразовать аргумент в числовой тип.
Тип данных по умолчанию для возвращаемого значения - float64 или int64 в зависимости от предоставленных данных. Используйте downcast параметр для получения других типов данных.
Обратите внимание, что может произойти потеря точности, если переданы действительно большие числа. Из-за внутренних ограничений ndarray, если числа меньше, чем -9223372036854775808 (np.iinfo(np.int64).min) или больше, чем 18446744073709551615 (np.iinfo(np.uint64).max) переданы, весьма вероятно, что они будут преобразованы в float, чтобы их можно было хранить в ndarray. Эти предупреждения аналогично применяются к Series поскольку внутри используется ndarray.
- Параметры:
- argскаляр, список, кортеж, одномерный массив или Series
Аргумент для преобразования.
- ошибки{‘ignore’, ‘raise’, ‘coerce’}, по умолчанию ‘raise’
Если 'raise', то недопустимый разбор вызовет исключение.
Если 'coerce', то некорректный разбор будет установлен как NaN.
Если 'ignore', то недопустимый разбор вернёт входные данные.
Изменено в версии 2.2.
“ignore” устарел. Перехватывайте исключения явно.
- downcaststr, по умолчанию None
Может быть ‘integer’, ‘signed’, ‘unsigned’ или ‘float’. Если не None, и если данные были успешно приведены к числовому типу данных (или если данные изначально были числовыми), понизить тип результирующих данных до наименьшего возможного числового типа данных согласно следующим правилам:
‘integer’ или ‘signed’: наименьший знаковый целочисленный dtype (мин.: np.int8)
'unsigned': наименьший беззнаковый целочисленный тип данных (мин.: np.uint8)
‘float’: наименьший тип данных с плавающей точкой (мин.: np.float32)
Поскольку это поведение отделено от основного преобразования в числовые значения, любые ошибки, возникающие при понижающем преобразовании, будут выведены независимо от значения входного параметра 'errors'.
Кроме того, понижение типа данных произойдет только если размер результирующего типа данных строго больше, чем тип данных, к которому он приводится, поэтому если ни один из проверенных типов данных не удовлетворяет этой спецификации, понижение типа данных не будет выполнено.
- dtype_backend{'numpy_nullable', 'pyarrow'}, по умолчанию 'numpy_nullable'
Тип данных бэкенда, примененный к результирующему
DataFrame(все еще экспериментальная). Поведение следующее:"numpy_nullable": возвращает поддерживаемый нуллифицируемым типом данныхDataFrame(по умолчанию)."pyarrow": возвращает nullable на основе pyarrowArrowDtypeDataFrame.
Добавлено в версии 2.0.
- Возвращает:
- ret
Числовой, если парсинг успешен. Тип возвращаемого значения зависит от ввода. Series, если Series, иначе ndarray.
Смотрите также
DataFrame.astypeПреобразует аргумент в указанный тип данных.
to_datetimeПреобразовать аргумент в datetime.
to_timedeltaПреобразовать аргумент в timedelta.
numpy.ndarray.astypeПривести массив numpy к указанному типу.
DataFrame.convert_dtypesПреобразовать dtypes.
Примеры
Взять отдельные серии и преобразовать в числовые, принудительно преобразуя, когда указано
>>> s = pd.Series(['1.0', '2', -3]) >>> pd.to_numeric(s) 0 1.0 1 2.0 2 -3.0 dtype: float64 >>> pd.to_numeric(s, downcast='float') 0 1.0 1 2.0 2 -3.0 dtype: float32 >>> pd.to_numeric(s, downcast='signed') 0 1 1 2 2 -3 dtype: int8 >>> s = pd.Series(['apple', '1.0', '2', -3]) >>> pd.to_numeric(s, errors='coerce') 0 NaN 1 1.0 2 2.0 3 -3.0 dtype: float64
Поддерживается понижение типов nullable integer и floating:
>>> s = pd.Series([1, 2, 3], dtype="Int64") >>> pd.to_numeric(s, downcast="integer") 0 1 1 2 2 3 dtype: Int8 >>> s = pd.Series([1.0, 2.1, 3.0], dtype="Float64") >>> pd.to_numeric(s, downcast="float") 0 1.0 1 2.1 2 3.0 dtype: Float32