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

为什么DataFrame除法运算返回ZeroDivisionError而非inf?

解决方案

你遇到的报错是因为当除数列是整数类型时,pandas整数除法遇0会直接触发ZeroDivisionError,而浮点型除法遇0默认返回inf,你可以选择以下任意一种方法解决:

  • 方法1:将除数转换为浮点型后再做除法,除0时会自动返回inf
# 写法1:直接转换除数类型
df['percent'] = df['value1'] / df['value2'].astype(float)

# 写法2:用pandas内置div方法实现相同效果
df['percent'] = df['value1'].div(df['value2'].astype(float))
  • 方法2:使用numpy.where做条件判断,手动处理除数为0的场景,兼容性最强
import numpy as np

# 除数为0时直接赋值inf,否则执行正常除法
df['percent'] = np.where(df['value2'] == 0, np.inf, df['value1'] / df['value2'])
  • 方法3:临时修改numpy的浮点错误捕获规则,屏蔽除零报错
import numpy as np

# 临时忽略除零错误,代码块执行结束后会自动恢复默认规则
with np.errstate(divide='ignore'):
    df['percent'] = df['value1'] / df['value2']

如果后续需要将结果中的inf替换为其他自定义值,可以补充对应处理代码:

# 示例:将正负inf替换为0,可按需修改目标值
df['percent'] = df['percent'].replace([np.inf, -np.inf], 0)

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

相关产品推荐
方舟 Agent Plan

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

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