Pandas转换object类型Amount列为int时报invalid literal错误如何处理
报错原因
报错的核心原因是Amount列的字符串内容包含两个int()无法直接识别的字符:千位分隔符逗号、小数点位,astype(int)仅支持转换纯数字组成的字符串,因此触发该错误。
解决方法
- 如果需要保留小数精度,直接转为浮点型即可:
import pandas as pd # 先移除千位分隔符逗号,再转为数值类型,无法转换的内容会被置为NaN df['Amount'] = pd.to_numeric(df['Amount'].str.replace(',', ''), errors='coerce')
- 如果确实需要转为整数类型,可先转浮点型再做取整处理:
# 方法1:直接截断小数部分转整数,支持兼容NaN空值 df['Amount'] = pd.to_numeric(df['Amount'].str.replace(',', ''), errors='coerce').astype('Int64') # 方法2:四舍五入后转整数,支持兼容NaN空值 df['Amount'] = pd.to_numeric(df['Amount'].str.replace(',', ''), errors='coerce').round().astype('Int64')
注意事项
errors='coerce'参数会把所有无法转换的脏数据转为NaN,你可以通过df[df['Amount'].isna()]筛选出异常数据做针对性处理- 如果数据里还有其他非数字字符(比如货币符号$、€等),可以在
str.replace阶段先统一移除后再做类型转换
内容的提问来源于stack exchange,提问作者Python account
相关产品推荐
相关产品推荐

