You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pandas转换sales列为int时报invalid literal for int() with base 10错误如何解决

pandas字符串格式销售额列转整数类型解决方案

错误原因说明

首次报错是因为sales列存在千位分隔符,,无法被直接识别为数字格式;替换逗号后二次报错的原因是:替换后得到的是类似"3906.00"的浮点格式字符串,astype(int)无法直接解析带小数点的字符串内容。

可行解决方案

  • 方案1:先转浮点类型再转整数(实现最简便,适合数据干净无超长整数的场景)
df["sales"] = df["sales"].str.replace(",", "").astype(float).astype(int)
  • 方案2:直接处理字符串截去小数部分后转整数(避免浮点转换的潜在精度损失问题)
df["sales"] = df["sales"].str.replace(",", "").str.split(".").str[0].astype(int)
  • 方案3:使用pd.to_numeric方法转换(兼容性更好,支持自定义脏数据处理规则)
# 常规写法,自动适配数字格式
df["sales"] = pd.to_numeric(df["sales"].str.replace(",", "")).astype(int)

# 存在脏数据时可加errors参数,非法值自动转为NaN,配合pandas可空整数类型使用
df["sales"] = pd.to_numeric(df["sales"].str.replace(",", ""), errors="coerce").astype("Int64")

内容的提问来源于stack exchange,提问作者Lucia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:48:03