Замените пропущенные значения на fillna
и проверьте:
print (pd.Series([0 , np.NaN, 18, 0]).fillna(0).any())
True
print (pd.Series([0 , np.NaN, 0]).fillna(0).any())
False
Или удалите их на dropna
:
print (pd.Series([0 , np.NaN, 18, 0]).dropna().any())
True
print (pd.Series([0 , np.NaN, 0]).dropna().any())
False
Numpy решение - удаление пропущенных значений путем индексации с помощью numpy.isnan
и индексации:
def checkNaN_or_0(arr):
m = ~np.isnan(arr)
return np.any(np.array(arr)[m])
print (checkNaN_or_0([0, np.NaN, 18, 0]))
True
print (checkNaN_or_0([0, np.NaN, 0]))
False
Спасибо @AGN Gazer за альтернативную работу также со значениями np.inf
:
def checkNaN_or_0(arr):
m = np.isfinite(arr)
return np.any(np.array(arr)[m])
print (checkNaN_or_0([0, np.NaN, 18, 0, np.inf]))
True
print (checkNaN_or_0([0, np.NaN, 0, np.inf]))
False