我认为您需要^{}首先,因为float不能强制转换为int:data_df['grade'] = pd.to_numeric(data_df['grade']).astype(int)
另一个解决方案首先转换为float,然后转换为int:data_df['grade'] = data_df['grade'].astype(float).astype(int)
样品:data_df = pd.DataFrame({'grade':['10','20','17.44']})
print (data_df)
grade
0 10
1 20
2 17.44
data_df['grade'] = pd.to_numeric(data_df['grade']).astype(int)
print (data_df)
grade
0 10
1 20
2 17data_df['grade'] = data_df['grade'].astype(float).astype(int)
print (data_df)
grade
0 10
1 20
2 17
---
如果某些值无法转换并且在to_numeric之后,则获取错误:ValueError: Unable to parse string
可以添加参数errors='coerce',以便将非数值转换为NaN。
如果NaN值,则无法转换为int,请参见docs:data_df = pd.DataFrame({'grade':['10','20','17.44', 'aa']})
print (data_df)
grade
0 10
1 20
2 17.44
3 aa
data_df['grade'] = pd.to_numeric(data_df['grade'], errors='coerce')
print (data_df)
grade
0 10.00
1 20.00
2 17.44
3 NaN
如果要将NaN更改为某些数字,例如0,请使用^{}:data_df['grade'] = pd.to_numeric(data_df['grade'], errors='coerce')
.fillna(0)
.astype(int)
print (data_df)
grade
0 10
1 20
2 17
3 0
小建议:
在使用errors='coerce'之前,请检查无法通过^{}强制转换为数值的所有行:print (data_df[pd.to_numeric(data_df['grade'], errors='coerce').isnull()])
grade
3 aa