I have the following code which tests if a stock makes new lifetime high. Bool output should be generated with numpy comparison.

import pandas as pd from pandas_datareader import data as web import numpy as np import math data = web.DataReader('goog', 'yahoo') data['lifetime'] = data['High'].asfreq('D').rolling(window=999999, min_periods=1).max() #To check if it is a lifetime high data['lifetime'] = data['lifetime'].astype(float) data['isclose'] = np.where(math.isclose(data['High'], data['lifetime'], rel_tol = 0.003), 1, 0)

This solution which was offered here iterating over each row in pandas to evaluate condition, should work but i am getting this error.

TypeError: cannot convert the series to <class ‘float’>

I did some looking and it seems that `math`

function is expecting a single value and not an array. How can i verify that it is the case? TypeError: cannot convert the series to <class ‘float’>

## Answer

Use `numpy.isclose`

for working with arrays, here columns:

data['isclose'] = np.where(np.isclose(data['High'], data['lifetime'], rel_tol = 0.003), 1, 0)