【发布时间】:2018-08-08 07:46:07
【问题描述】:
我想知道如何在 map 函数中处理除以 0 错误(在 Python 2.7 下)。
不使用map,我得到
def my_func(a, b):
return a / b
a = pandas.DataFrame([1, 1])
b = pandas.DataFrame([1, 0])
my_func(a, b)
Out[]:
0
0 1.000000
1 inf
但我在使用map 时得到不同的结果:
map(my_func, a, b)
Out[]:
File "<ipython-input-12-83b4adbfd8de>", line 3, in func
return a / b
ZeroDivisionError: integer division or modulo by zero
我该如何处理这个错误?
【问题讨论】:
-
您可以确保 NumPy 的除法始终与
return np.divide(a, b)一起使用 -
@jdjdehesa,确实我这个方法没有任何错误,只有一个警告。但是,
map(my_func, a, b)的输出是Out[28]: [0] -
或类似
return np.asarray(a) / np.asarray(b) -
不明白为什么输出是
Out[]: [0]? -
嗯,问题是
map(my_func, a, b)实际上会遍历a和b的列标签。在您的示例中,a和b都具有相同的列列表[0],所以实际上我在控制台中得到的输出是[nan](0 / 0)。您可以改为通过a[0], b[0]或a.values, b.values或其他内容...
标签: python pandas numpy divide-by-zero