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

pandas将exp_col列指数值转整数出现负数,如何获取正确原始值

问题根因
  • 整数溢出:astype(int)默认会匹配系统默认整数类型,32位有符号整数上限仅为2^31-1 = 2147483647,当你要转换的指数格式数值超过这个阈值时,就会触发溢出翻转,得到负数结果。
  • 字符串解析异常:如果exp_col是字符串类型存储的指数表达式(如"3.4e+9"),直接调用astype(int)会无法正确解析数值,也可能出现异常结果。
可行解决方案

场景1:exp_col为浮点型存储的指数数值

优先用64位整数类型避免溢出,如果数值极大可以用Python原生无上限整数:

# 方案1:转64位整数,适配绝大多数超过32位上限的场景
df['Converting_to_int'] = df['exp_col'].fillna(0).astype('int64')

# 方案2:数值超过int64上限时用,转Python原生整数
df['Converting_to_int'] = df['exp_col'].fillna(0).apply(lambda x: int(x))

场景2:exp_col为字符串格式存储的指数数值

先转浮点型再转整数即可正确解析:

df['Converting_to_int'] = df['exp_col'].fillna('0').astype(float).astype('int64')
快速验证方式

你可以先执行以下代码确认字段属性,匹配对应解决方案:

# 查看字段类型
print(df['exp_col'].dtype)
# 查看字段最大值,判断是否超出32位整数上限
print(df['exp_col'].max())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:45:04