From 39dd1ce0e6d4a9efac49c8817f4a017b734a6fae Mon Sep 17 00:00:00 2001
From: David Schaefer <david.schaefer@ufz.de>
Date: Fri, 14 Aug 2020 10:25:13 +0200
Subject: [PATCH] flagger initialization perf improvements through a reduction
 of type castings

---
 saqc/flagger/baseflagger.py | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/saqc/flagger/baseflagger.py b/saqc/flagger/baseflagger.py
index dd3016de9..be0b547ea 100644
--- a/saqc/flagger/baseflagger.py
+++ b/saqc/flagger/baseflagger.py
@@ -64,14 +64,16 @@ class BaseFlagger(ABC):
         if data is not None:
             if not isinstance(data, diosT):
                 data = dios.DictOfSeries(data)
-            flags = data.copy()
-            flags[:] = self.UNFLAGGED
+
+            flags = dios.DictOfSeries(columns=data.columns)
+            for c in flags.columns:
+                flags[c] = pd.Series(self.UNFLAGGED, index=data[c].index)
+            flags = flags.astype(self.dtype)
         else:
             if not isinstance(data, diosT):
                 flags = dios.DictOfSeries(flags)
 
-        newflagger = self.copy()
-        newflagger._flags = flags.astype(self.dtype)
+        newflagger = self.copy(flags=flags)
         return newflagger
 
     def rename(self, field: str, new_name: str):
-- 
GitLab