diff --git a/saqc/funcs/generic.py b/saqc/funcs/generic.py index 6beef3c53091b5f270002fc2898bb54d3c155203..8dd387788f51a993eb051e7f3596366f9abce34b 100644 --- a/saqc/funcs/generic.py +++ b/saqc/funcs/generic.py @@ -12,7 +12,7 @@ from dios import DictOfSeries from saqc.constants import GOOD, BAD, UNFLAGGED from saqc.core.flags import initFlagsLike, Flags -from saqc.core.register import flagging, processing, _maskData +from saqc.core.register import flagging, processing, _maskData, _isflagged from saqc.core.visitor import ENVIRONMENT import operator as op @@ -255,6 +255,7 @@ def flag( if not np.issubdtype(mask.dtype, np.bool_): raise TypeError(f"generic expression does not return a boolean array") - flags[field] = mask.replace({False: UNFLAGGED, True: flag}) + m = ~_isflagged(flags[field], to_mask) & mask + flags[m, field] = flag return data, flags