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

Pandas中如何存储超出int64范围的大数值并适配Sklearn训练?

处理方案

1. 解决大整数存储溢出问题

你遇到的报错本质是3.4e+23已经远超过int64的上限(约9e18),硬转int64必然触发溢出,没有办法强行把超过范围的整数塞进int64格式里,可直接更换存储类型:

  • 优先转float64格式:float64的数值表示上限约为1.8e+308,完全覆盖你的数据范围。虽然float64只能精确表示2^53(约9e15)以内的整数,但对于Sklearn标准化、归一化这类尺度变换操作来说,尾数位的精度损失几乎不会影响模型训练效果,是性价比最高的方案。

单字段转换代码:

df['target_col'] = df['target_col'].astype('float64')

全DataFrame批量转换数值列代码:

# 自动筛选所有数值列,跳过字符串、时间等非数值列
numeric_cols = df.select_dtypes(include='number').columns
df[numeric_cols] = df[numeric_cols].astype('float64')

如果是数据读入阶段就想处理,可直接在读取接口指定dtype:

# 读CSV时指定对应列格式
pd.read_csv('your_file.csv', dtype={'target_col': 'float64'})

2. 特殊场景适配方案

如果你有严格的整数精度保留要求,可选择先做尺度压缩:

  • 先将所有大整数统一除以固定缩放系数(比如1e6,只要把数值压缩到int64上限以内即可),再转成int64格式,后续模型推理时再把缩放系数补回即可,该方案也完全兼容Sklearn的所有预处理逻辑。

注意:Sklearn的StandardScaler、Normalizer预处理本身就是基于浮点运算实现的,输入转换为float64格式后可直接调用,不会存在数值范围报错问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:15:03