即使过滤掉负值,log2中也会被零除的警告

时间:2018-07-25 19:29:20

标签: python-3.x python-2.7 pandas numpy series

我们收到错误-“在log2中除以零” 如果该值小于零。即使使用where语句免除非正值,我也面临错误。

a = pd.Series([1,0,5,6,8])
np.where(a<=0, 1, np.log2(a))

2 个答案:

答案 0 :(得分:2)

在计算a中的值为非正数时应替换的值时,将调用log2并将其应用于a。不过,这实际上并不会影响您的输出。要消除此错误,可以先将非正值替换为1,然后执行log2

答案 1 :(得分:1)

尝试以下操作:

import pandas as pd
import numpy as np

a = pd.Series([1,0,5,6,8])

for digit in a:
    np.where(digit<=0, 1, np.log2(digit))

问题似乎在于您是否愿意

np.where(a<=0, 1, np.log2(a))

它将整个系列视为不是通过a的迭代。