为了账号安全,请及时绑定邮箱和手机立即绑定

除以零时如何得到 -inf 值?

除以零时如何得到 -inf 值?

三国纷争 2023-08-08 17:14:33
在计算数据框中两列之间的百分比差异时,我得到了一个恼人的结果。这是我的数据示例:19044   109328.6627 4.740845550   53655.32937 inf0   52591.95235 inf0   56103.29265 inf第 1 列和第 2 列是我的数据框中的数字,第 3 列是我生成的变化百分比。我认为问题是当我除以 0 时我得到 inf。这会影响我以后的计算。这是我的计算:TestResults['diff'] = ((abs(TestResults['B']).astype(float) - abs(TestResults['A']).astype(float)) / abs(TestResults['A']).astype(float))当我尝试这个命令时,我也得到了类似的结果:TestResults['diff'] = TestResults['B'].sub(df['A'].shift()).div(df['A']).fillna(0)我假设我可以执行 df.column.replace 来删除 inf 值,但我不想一开始就生成它。我能做些什么?
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

在 numpy 中你可以设置错误行为:


然而,除以零可以使用 seterr 捕获:


np.seterr(divide='raise')

np.divide(1, 0)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

FloatingPointError: divide by zero encountered in divide

https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.divide.html


另一种选择是编写自己的 div 函数,例如:


def safe_div(x,y):

    if y == 0:

        return 0

    return x / y

在你的代码中:


TestResults['diff'] = safe_div(TestResults['B'].sub(df['A'].shift()),(df['A']).fillna(0))



查看完整回答
反对 回复 2023-08-08
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信