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

Python迁移代码时除零错误转NaN的环境差异排查

Pandas版本差异引发的除零行为不一致问题

问题现象

本地Python 3.9运行迁移代码时触发ZeroDivisionError,但原代码在Python 3.6环境中执行除零操作会自动生成NaN,无报错。

排查过程

  • 最初推测是Python环境配置差异,对比版本特性后排除该可能;
  • 进一步对比依赖版本,定位到Pandas版本不一致:原环境用Pandas 0.21.1,本地用Pandas 1.4.1。

根本原因

两个Pandas版本对DataFrame列类型的处理逻辑不同:

  • Pandas 0.21.1中,目标列类型为float64,对float类型执行除零操作时,遵循numpy浮点数运算规则,生成inf或NaN,不会触发Python原生除零异常;
  • Pandas 1.4.1中,目标列类型被推断为object,对object类型数值执行除零运算时,调用Python原生数值运算逻辑,从而触发ZeroDivisionError。

解决方法

将object类型的列转换为float64类型后再执行运算,即可恢复旧版本的行为:

# 转换列类型
df['target_col'] = df['target_col'].astype('float64')
# 执行除零操作,生成inf/NaN,无报错
result = df['target_col'] / 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:09:26