將參數轉換為數字類型。
默認返回dtype
為float64
或int64
, 具體取決於提供的數據。使用downcast
參數獲取其他dtype
。
參數 | 描述 |
---|---|
args | 接受scalar, list, tuple, 1-d array, or Series類型 |
errors | 有3種類型{‘ignore’, ‘raise’, ‘coerce’}, 默認為‘raise’ |
downcast | {‘integer’, ‘signed’, ‘unsigned’, ‘float’} , default None,默認返回float64 或int64 |
注意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類型生效