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

将Pandas浮点列转为int时得到-2147483648(平台特定错误)

问题分析与解决方案

这个问题的核心是32位有符号整数溢出,我来给你拆解原因和解决办法:

为什么会得到-2147483648?

你要转换的数值31062000999100远大于32位有符号整数的最大值2147483647。在你的Windows环境下(结合老版本pandas 0.22.0),调用astype(int)时默认使用了32位整数类型,当数值超出范围时就会触发溢出,最终返回32位有符号整数的最小值-2147483648。而Linux环境下pandas默认使用64位整数,所以不会出现这个问题。

解决办法

1. 直接转换为64位整数

明确指定转换为int64类型,它能容纳远大于你当前数值的整数范围:

import pandas as pd
a = pd.DataFrame(columns=['a'])
a.loc[0] = 31062000999100.0000000
a = a.astype('int64')
print(a)
# 输出:
#             a
# 0  31062000999100
print(a.dtypes)
# 输出:int64

2. 从字符串格式处理

如果已经将数据转成了带小数点的字符串(比如31062000999100.0),可以先剔除小数点部分再转成int64:

a['a'] = a['a'].str.split('.').str[0].astype('int64')

3. 预防建议

尽量避免用float类型存储大整数——float64的精度上限是2^53,超过这个值的整数无法被精确表示,可能导致数值失真。如果你的原始数据是整数,建议直接以字符串或整数类型读取,再转换为int64。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:02:50