Skip to content
Snippets Groups Projects
Commit dbdade94 authored by David Schäfer's avatar David Schäfer
Browse files

various modifactions

parent abc75bd0
No related branches found
No related tags found
No related merge requests found
...@@ -41,14 +41,14 @@ class BaseFlagger: ...@@ -41,14 +41,14 @@ class BaseFlagger:
pandas data structures tend to behave unpredictively pandas data structures tend to behave unpredictively
in assignments, especially if a multi column index is used in assignments, especially if a multi column index is used
""" """
if flag is None: flag = self.flags.max() if flag is None else self._checkFlag(flag)
flag = self.flags.max()
else:
self._checkFlag(flag)
flags = flags.copy() flags = flags.copy()
# NOTE: conversion of "flags frame to np.array is done here already, since return argument is just the array # NOTE:
# anyway. For applying mulitdimensional indexing on the DataFrame "flags", you would have to stack it first, # conversion of 'flags' frame to np.array is done here already,
# with .stack() (try flags.stack[flags<flag] = flag and than unstack.) # since return argument is just the array anyway. For applying
# mulitdimensional indexing on the DataFrame 'flags', you would
# have to stack it first
# (try flags.stack[flags<flag] = flag and than unstack.)
flags = flags.values flags = flags.values
flags[flags < flag] = flag flags[flags < flag] = flag
...@@ -57,20 +57,23 @@ class BaseFlagger: ...@@ -57,20 +57,23 @@ class BaseFlagger:
def initFlags(self, data: pd.DataFrame) -> pd.DataFrame: def initFlags(self, data: pd.DataFrame) -> pd.DataFrame:
out = data.copy() out = data.copy()
out[:] = self.flags[0] out[:] = self.flags[0]
# astype conversion of return Dataframe performed seperately, because pd.DataFrame(...,dtype=self.flags) # NOTE:
# wont give you categorical flag objects: # astype conversion of return Dataframe performed
# seperately, because pd.DataFrame(..., dtype=self.flags)
# wont give you categorical flag objects
return out.astype(self.flags) return out.astype(self.flags)
def isFlagged(self, flags: ArrayLike, flag: T = None) -> ArrayLike: def isFlagged(self, flags: ArrayLike, flag: T = None) -> ArrayLike:
if flag is None: if flag is None:
return pd.notnull(flags) & (flags > self.flags[0]) return pd.notnull(flags) & (flags > self.flags[0])
self._checkFlag(flag) return flags == self._checkFlag(flag)
return flags == flag
def _checkFlag(self, flag): def _checkFlag(self, flag):
if flag not in self.flags: if flag not in self.flags:
raise ValueError(f"Invalid flag '{flag}'. " raise ValueError(
f"Possible choices are {list(self.flags.categories)[1:]}") f"Invalid flag '{flag}'. "
f"Possible choices are {list(self.flags.categories)[1:]}")
return flag
def nextTest(self): def nextTest(self):
pass pass
...@@ -36,10 +36,11 @@ class DmpFlagger(BaseFlagger): ...@@ -36,10 +36,11 @@ class DmpFlagger(BaseFlagger):
self.project_version = version.decode().strip() self.project_version = version.decode().strip()
def initFlags(self, data, **kwargs): def initFlags(self, data, **kwargs):
columns = data.columns if isinstance(data, pd.DataFrame) else [data.name] if isinstance(data, pd.Series):
data = data.to_frame()
colindex = pd.MultiIndex.from_product( colindex = pd.MultiIndex.from_product(
[columns, self.flag_fields], [data.columns, self.flag_fields],
names=[ColumnLevels.VARIABLES, ColumnLevels.FLAGS]) names=[ColumnLevels.VARIABLES, ColumnLevels.FLAGS])
out = pd.DataFrame(data=self.flags[0], out = pd.DataFrame(data=self.flags[0],
...@@ -53,10 +54,7 @@ class DmpFlagger(BaseFlagger): ...@@ -53,10 +54,7 @@ class DmpFlagger(BaseFlagger):
if not isinstance(flags, pd.DataFrame): if not isinstance(flags, pd.DataFrame):
raise TypeError raise TypeError
if flag is None: flag = self.flags.max() if flag is None else self._checkFlag(flag)
flag = self.flags.max()
else:
self._checkFlag(flag)
if Keywords.VERSION in comment: if Keywords.VERSION in comment:
comment = comment.replace(Keywords.VERSION, self.project_version) comment = comment.replace(Keywords.VERSION, self.project_version)
......
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