在执行循环Python时绕过错误除以零
使用Python的新功能:)我正在尝试使用不同的列对数据进行规范化,但有时会出现一些用于进行除法的列的值为0的情况。然后给我一个错误:零除以零 我有一个数据帧mergedfs并循环通过列来计算标准化值在执行循环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):
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}