import pandas pandas.to_numeric(arg, errors='raise', downcast=None, dtype_backend=no_default)
arg
- аргумент для преобразования. Принимает скаляр, список list
, кортеж tuple
, 1-d array, или Series
.
errors='raise
- как обрабатывать ошибки преобразования:
'raise'
, то недопустимый синтаксический анализ вызовет исключение.'coerce'
, то недопустимый синтаксический анализ будет установлен как NaN
.'ignore'
, то неверный синтаксический анализ вернет входные данные.downcast=None
- Может быть ‘integer’
, ‘signed'
, ‘unsigned'
или 'float'
. Если значение не равно None
, и если данные были успешно преобразованы в числовой dtype
(или если данные изначально были числовыми), то уменьшит результирующие данные до минимально возможного числового dtype
в соответствии со следующими правилами:
'integer'
или 'signed'
: наименьший знаковый тип dtype
(мин.: np.int8
);'unsigned'
: наименьший беззнаковый тип dtype
(мин.: np.uint8
);'float'
: наименьший dtype
с плавающей точкой (мин.: np.float32
).Так как это поведение отличается от основного преобразования в числовые значения, то любые ошибки, возникшие во время понижения, будут обнаружены независимо от значения входных данных 'errors'
.
Кроме того, понижающая обработка будет выполняться только в том случае, если размер dtype
результирующих данных строго больше, чем dtype
, к которому они должны быть преобразованы, поэтому, если ни один из проверенных dtypes
не удовлетворяет этой спецификации, то понижающая обработка данных выполняться не будет.
dtype_backend=no_default
- внутренний тип данных, применяемый к результирующему DataFrame
(все еще экспериментальный). Поведение выглядит следующим образом:
'numpy_nullable'
: возвращает DataFrame
с поддержкой null-dtype
(по умолчанию).'pyarrow'
: возвращает DataFrame
ArrowDtype
с нулевым значением, поддерживаемый pyarrow
.pandas.to_numeric()
Функция pandas.to_numeric()
модуля pandas
преобразует аргумент в числовой тип.
Тип возвращаемого значения по умолчанию - float64
или int64
, в зависимости от предоставленных данных. Для получения других типов dtypes
необходимо использовать аргумент downcast
.
Обратите внимание, что при передаче действительно больших чисел может произойти потеря точности. Из-за внутренних ограничений
numpy.ndarray()
, если передаются числа меньше -9223372036854775808 (np.iinfo(np.int64).min
) или больше 18446744073709551615 (np.iinfo(np.uint64).max
), то весьма вероятно, что они будут преобразованы в число с плавающей запятой. Эти предупреждения применимы аналогичноSeries
, т.к. он внутренне используетndarray
.
pandas.to_numeric()
Возьмем Series
и преобразуем ее данные в различные числовые типы. Обратите внимание на поведение аргументов downcast
>>> import pandas as pd >>> 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
Поведение аргумента errors
>>> 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
Поддерживается понижающее преобразование dtypes
целых чисел с нулевым значением и плавающей запятой:
>>> 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