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 на основе pyarrow ArrowDtype DataFrame.

Добавлено в версии 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