Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在执行循环Python时绕过错误除以零_Python - Fatal编程技术网

在执行循环Python时绕过错误除以零

在执行循环Python时绕过错误除以零,python,Python,使用Python的新功能:)我正在尝试使用不同的列对数据进行规范化,但有时会出现一些用于进行除法的列的值为0的情况。然后给我一个错误:零除以零 我有一个数据帧mergedfs并循环通过列来计算标准化值 b = 0 w = (len(files))+1 #number depending on how many csv files I have. This will determine which columns index I will use. while b < len(files):

使用Python的新功能:)我正在尝试使用不同的列对数据进行规范化,但有时会出现一些用于进行除法的列的值为0的情况。然后给我一个错误:零除以零

我有一个数据帧mergedfs并循环通过列来计算标准化值

b = 0
w = (len(files))+1 #number depending on how many csv files I have. This will determine which columns index I will use.
while b < len(files):
    b += 1
    if b == 1:
        w += 1
        mergedfs.insert(len(files)+1+b, 'NHAF R{}'.format(b), np.log10((((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106)) / sum(((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106))))))
    else:
         w += 2
         mergedfs.insert(len(files)+1+b, 'NHAF R{}'.format(b), np.log10(((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106)) / sum(((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106)))))
但是,没有成功

我已经在stackoverflow上搜索了很长一段时间,大多数都没有在我的代码上工作

如果你能指导我解决这个问题,我将非常感谢


干杯

将代码嵌入
try..except
以捕获异常。通过
pass

try:
   while b < len(files):
    b += 1
    if b == 1:
        w += 1
        mergedfs.insert(len(files)+1+b, 'NHAF R{}'.format(b), np.log10((((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106)) / sum(((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106))))))
    else:
         w += 2
         mergedfs.insert(len(files)+1+b, 'NHAF R{}'.format(b), np.log10(((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106)) / sum(((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106)))))

except ZeroDivisionError as err:
   pass

当分母为0时,您预计会发生什么?您可以使用
try
捕捉错误,但需要提供替换值才能使用。Hi@Carcigenicate如果它们等于零,我只想跳过ti,但我不想停止进程捕捉异常并指示需要在except块中执行的操作。然后,在除块中,pass@Flora你知道如何使用
试试
try:
   while b < len(files):
    b += 1
    if b == 1:
        w += 1
        mergedfs.insert(len(files)+1+b, 'NHAF R{}'.format(b), np.log10((((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106)) / sum(((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106))))))
    else:
         w += 2
         mergedfs.insert(len(files)+1+b, 'NHAF R{}'.format(b), np.log10(((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106)) / sum(((mergedfs.ix[:,b] / mergedfs.ix[:,w])/106)/((mergedfs.ix[:,b].sum() / (mergedfs.ix[:,w].sum())/106)))))

except ZeroDivisionError as err:
   pass
from contextlib import suppress

with suppress(ZeroDivisionError):
  {your code goes here}