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

Pandas使用astype(int)转换大数值时全部变为-2147483648的问题

大数值转整数溢出问题的解决办法

问题根源

这是典型的32位整数溢出:pandas里默认的int类型对应32位有符号整数,最大值只有2147483647(约21亿),而你的数值都是5000多亿,远超出这个范围,溢出后就会被强制转换成32位整数的最小值-2147483648。

另外你用的long int、big int是C语言或SQL里的类型名称,pandas不支持这种写法,得用它兼容的numpy类型标识。

可行解决办法

1. 转成64位整数(最推荐)

直接指定int64类型,它的最大值能到9223372036854775807(约9千亿亿),完全装得下你的数据:

import pandas as pd
x = [56668772800.0, 55899926600.0, 55038007900.0, 58073681300.0, 58224458500.0]
df = pd.DataFrame(x, columns=["pol_number"])
# 转换为int64类型
df.pol_number = df.pol_number.astype('int64')
df

运行后就能得到正确的整数结果:

pol_number
0  56668772800
1  55899926600
2  55038007900
3  58073681300
4  58224458500

2. 用Nullable整数类型(适合有空值的场景)

如果你的数据里可能出现空值,建议用大写的Int64类型,它既支持大整数,又能处理空值:

df.pol_number = df.pol_number.astype('Int64')

3. 先转字符串再转整数(避免浮点数精度风险)

如果担心浮点数转整数时的精度问题(比如数值原本不是精确整数的情况),可以先转成字符串再转int64:

df.pol_number = df.pol_number.astype(str).astype('int64')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:05:21