Pandas空DataFrame含空值的float64列转int类型失败原因是什么
错误原因
- 用
reindex为空白DataFrame新增列时,所有新增列的默认填充值为NaN,NaN本身是float64类型,所以空列默认会被设为float64类型。 object类型支持存储空值,所以转换过程可以正常执行。- 但Pandas的原生
int类型不支持存储空值,带NaN的列强行转int就会触发ValueError: Cannot convert non-finite values (NA or inf) to integer错误。
解决方案
方案1:使用可空整数类型
如果你需要保留空值,可以用Pandas提供的可空整数类型Int64(注意首字母大写),修改类型转换代码即可:
# 把原来的astype('int')替换为astype('Int64') data[['age','phone']]= data[['age','phone']].astype('Int64')
方案2:先填充空值再转换
如果你不需要保留空值,可以先给列填充默认有效值,确认列中没有NaN之后再转成普通int类型:
# 示例:先把空值填充为0,再转int data[['age','phone']] = data[['age','phone']].fillna(0).astype('int')
内容的提问来源于stack exchange,提问作者Inga
相关产品推荐
相关产品推荐

