用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