maxframe.dataframe.to_numeric#

maxframe.dataframe.to_numeric(arg, errors='raise', downcast=None)[源代码]#

将参数转换为数值类型。

默认返回的 dtype 是 float64int64,取决于提供的数据。使用 downcast 参数可以获得其他 dtype。

请注意,如果传入非常大的数字,可能会发生精度丢失。由于 ndarray 的内部限制,如果传入小于 -9223372036854775808 (np.iinfo(np.int64).min) 或大于 18446744073709551615 (np.iinfo(np.uint64).max) 的数字,很可能会被转换为 float 以便存储在 ndarray 中。这些警告同样适用于 Series,因为它内部使用了 ndarray

参数:
  • arg (scalar, list, tuple, 1-d array, or Series) -- 要转换的参数。

  • errors ({'ignore', 'raise', 'coerce'}, default 'raise') --

    • 如果为 'raise',则无效解析将引发异常。

    • 如果为 'coerce',则无效解析将被设置为 NaN。

    • 如果为 'ignore',则无效解析将返回输入。

  • downcast ({'integer', 'signed', 'unsigned', 'float'}, default None) -- 如果不为 None,并且数据已成功转换为数值类型(或者数据本身就是数值类型),则根据以下规则将结果数据向下转换为可能的最小数值类型: - 'integer' 或 'signed':最小的有符号整数类型(最小值:np.int8) - 'unsigned':最小的无符号整数类型(最小值:np.uint8) - 'float':最小的浮点数类型(最小值:np.float32) 由于此行为与核心数值转换是分开的,因此在向下转换期间引发的任何错误都会被抛出,而不管 'errors' 输入的值是什么。 此外,仅当结果数据的 dtype 大小严格大于要转换到的 dtype 时才会发生向下转换,因此如果没有满足该规范的 dtype,则不会对数据执行向下转换。

返回:

如果解析成功则返回数值。返回类型取决于输入。如果是 Series 则返回 Series,否则返回 Tensor。

返回类型:

ret

参见

DataFrame.astype

将参数转换为指定的 dtype。

to_datetime

将参数转换为 datetime。

to_timedelta

将参数转换为 timedelta。

numpy.ndarray.astype

将 numpy 数组转换为指定类型。

DataFrame.convert_dtypes

转换数据类型。

示例

获取独立的 Series 并转换为数值类型,在指示时进行强制转换

>>> s = md.Series(['1.0', '2', -3])
>>> md.to_numeric(s).execute()
0    1.0
1    2.0
2   -3.0
dtype: float64
>>> md.to_numeric(s, downcast='float').execute()
0    1.0
1    2.0
2   -3.0
dtype: float32
>>> md.to_numeric(s, downcast='signed').execute()
0    1
1    2
2   -3
dtype: int8
>>> s = md.Series(['apple', '1.0', '2', -3])
>>> md.to_numeric(s, errors='ignore').execute()
0    apple
1      1.0
2        2
3       -3
dtype: object
>>> md.to_numeric(s, errors='coerce').execute()
0    NaN
1    1.0
2    2.0
3   -3.0
dtype: float64

支持可空整数和浮点数类型的向下转换:

>>> s = md.Series([1, 2, 3], dtype="int64")
>>> md.to_numeric(s, downcast="integer").execute()
0    1
1    2
2    3
dtype: int8
>>> s = md.Series([1.0, 2.1, 3.0], dtype="float64")
>>> md.to_numeric(s, downcast="float").execute()
0    1.0
1    2.1
2    3.0
dtype: float32