![](/img/trans.png)
[英]Procedure for explicit type conversion in python from a float to int
[英]type conversion in python from float to int
我正在嘗試將類型float64
data_df
更改為int
。
data_df['grade'] = data_df['grade'].astype(int)
我收到以下錯誤。
以10為底的int()無效文字:“ 17.44”
我認為您首先需要to_numeric
因為無法將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 17
data_df['grade'] = data_df['grade'].astype(float).astype(int)
print (data_df)
grade
0 10
1 20
2 17
如果某些值無法轉換,並且在to_numeric
之后得到錯誤:
ValueError:無法解析字符串
可以添加參數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
使用fillna
:
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'
請檢查所有無法通過boolean indexing
轉換為數字的行:
print (data_df[pd.to_numeric(data_df['grade'], errors='coerce').isnull()])
grade
3 aa
有效的方法是data_df['grade'] = int(pd.to_numeric(data_df['grade']))
方法as_type(int)
拋出並出錯,因為它想告訴您,從浮點數到整數的精確轉換是不可能的您將丟失信息。 我的解決方案將截斷整數(即1.9將變為1),因此您可能想在問題中指定是否要通過截斷或舍入將float轉換為整數(即1.9將變為2)
從:
data_df['grade'] = data_df['grade'].astype(int)
需要將int更改為'int'
data_df['grade'] = data_df['grade'].astype('int')
我發現這對我有用,其他先前的答案都對我沒有幫助:
data_df['grade'] = data_df['grade'].apply(np.int)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.