pd.to_numeric

将参数转换为数字类型。

默认返回dtypefloat64int64, 具体取决于提供的数据。使用downcast参数获取其他dtype

参数 描述
args 接受scalar, list, tuple, 1-d array, or Series类型
errors 有3种类型{‘ignore’, ‘raise’, ‘coerce’}, 默认为‘raise’
downcast {‘integer’, ‘signed’, ‘unsigned’, ‘float’} , default None,默认返回float64int64

注意downcast的意思是向下转换

errors中参数的解释:

'raise'参数:无效的解析将引发异常

'corece'参数:将无效解析设置为NaN

'ignore'参数:无效的解析将返回输入

downcast中参数的意义:

默认的None就是不进行处理

'integer'和'signed':最小的有符号整数dtype(最小值np.int8)

'unsigned':最小的unsigned int dtype(np.uint8)

'float':最小的float dtype(np.float32)

返回值:如果解析成功,则为数字。其中返回类型取决于输入。如果为Series,则为Series,否则为ndarray。

数据集构建代码如下:

import pandas as pd
import numpy as np
s = pd.Series(['apple', '1.0', '2','2019-01-02',1, False,None,pd.Timestamp('2018-01-05')])

比如对于如下的数据:

执行raise会报错,因为该数据里面有非数字,结果如下:

执行ignore结果如下:

执行coerce结果如下:

向下转换期间引发的任何错误都会浮出水面。此外,仅当结果数据的dtype的大小,严格大于要强制转换为dtype的dtype时,
才会发生向下转换,因此,如果检查的所有dtype都不满足该规范,则不会对该数据执行向下转换。

不理解可以试试就理解了,比如对该数据在'coerce'条件下执行integer会发现转换的是float。

数据转换还有astype的方法:

# astype中的error没有`coerce`选项,所以只适合`numeric`内部类型的转换,比如将int32转换为int64,int32转换为float32
# 而不适合在object,时间格式之间做转换,
s.astype('int32',errors='raise')
s.astype('int32',errors='ignore')  # 对object无效,astype只能对numeric类型生效
posted @ 2021-07-08 15:31  晓尘  阅读(2969)  评论(2编辑  收藏  举报