你需要向函数
to_numeric
添加参数
errors='coerce'
:
ID = pd.to_numeric(ID, errors='coerce')
如果
ID
是列:
df.ID = pd.to_numeric(df.ID, errors='coerce')
但非数字会被转换为NaN
,所以所有值都是float
类型。
对于int
需要先将NaN
转换为某个值,例如0
,然后再进行强制类型转换为int
:
df.ID = pd.to_numeric(df.ID, errors='coerce').fillna(0).astype(np.int64)
示例:
df = pd.DataFrame({'ID':['4806105017087','4806105017087','CN414149']})
print (df)
ID
0 4806105017087
1 4806105017087
2 CN414149
print (pd.to_numeric(df.ID, errors='coerce'))
0 4.806105e+12
1 4.806105e+12
2 NaN
Name: ID, dtype: float64
df.ID = pd.to_numeric(df.ID, errors='coerce').fillna(0).astype(np.int64)
print (df)
ID
0 4806105017087
1 4806105017087
2 0
编辑:如果使用 pandas 0.25+ 版本,则可以使用integer_na
:
df.ID = pd.to_numeric(df.ID, errors='coerce').astype('Int64')
print (df)
ID
0 4806105017087
1 4806105017087
2 NaN