Skip to content
Snippets Groups Projects
Commit b6111449 authored by Bert Palm's avatar Bert Palm 🎇
Browse files

make DmpFlagger run

parent cdc3ee49
No related branches found
No related tags found
No related merge requests found
......@@ -119,10 +119,6 @@ def evalExpression(expr: str, flagger: BaseFlagger,
else:
raise TypeError(node)
if not (data.columns == flags.columns).all():
raise TypeError(
"arguments 'data' and 'flags' need the same column names")
FUNCTIONS = initFunctionNamespace(nodata, flagger)
namespace = {**namespace,
**{"data": data, "flags": flags, "this": field}}
......
......@@ -26,18 +26,17 @@ class DmpFlagger(BaseFlagger):
def emptyFlags(self, data, value="NIL", **kwargs):
columns = data.columns if isinstance(data, pd.DataFrame) else [data.name]
columns = pd.MultiIndex.from_product([columns, self.flag_fields])
return pd.DataFrame(data=value,
columns=columns, index=data.index)
return pd.DataFrame(data=value, columns=columns, index=data.index)
def setFlag(self, flags, flag=Flags.BAD, cause="NIL", comment="NIL", **kwargs):
self._isFlag(flag)
for field, f in zip(self.flag_fields, [flag, cause, comment]):
flags.loc[:, (slice(None), field)] = f
flags.loc[:, field] = f
return flags
def isFlagged(self, flags, flag=None):
self._isFlag(flag)
flagcol = flags.loc[:, (slice(None), FlagFields.FLAG)].squeeze()
flagcol = flags.loc[:, FlagFields.FLAG].squeeze()
return super().isFlagged(flagcol, flag)
def _isFlag(self, flag):
......
......@@ -38,7 +38,10 @@ def flagGeneric(data, flags, field, flagger, nodata=np.nan, **flag_params):
to_flag = result.filled(True)
fchunk = flagger.setFlag(flags=flags.loc[to_flag, field], **flag_params)
flags.loc[to_flag, field] = fchunk
# .values transform the data to NumPy array, so the assignment
# can work for single- and multi- indexed data.
flags.loc[to_flag, field] = fchunk.values
return data, flags
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment