我认为您需要^{}首先,因为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