From 0835c4b2c74e76c3d7c37f22d6e2ee817f999ff0 Mon Sep 17 00:00:00 2001 From: David Schaefer <david.schaefer@ufz.de> Date: Mon, 5 Jul 2021 15:12:48 +0200 Subject: [PATCH] [FIX] significantly speedup positional backward translation --- saqc/core/translator/positionaltranslator.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/saqc/core/translator/positionaltranslator.py b/saqc/core/translator/positionaltranslator.py index 5db84c516..e51871f2b 100644 --- a/saqc/core/translator/positionaltranslator.py +++ b/saqc/core/translator/positionaltranslator.py @@ -4,6 +4,7 @@ from __future__ import annotations from typing import Tuple +import numpy as np import pandas as pd from saqc.core.flags import ( @@ -91,12 +92,11 @@ class PositionalTranslator(Translator): # Concatenate the single flag values. There are faster and more # complicated approaches (see former `PositionalFlagger`), but # this method shouldn't be called that often - tflags = ( - thist.astype(int).astype(str).apply(lambda x: x.sum(), axis="columns") - ) - out[field] = "9" - if not tflags.empty: - # take care for the default columns - out[field] += tflags.str.slice(start=1) + ncols = thist.shape[-1] - 1 + init = 9 * 10 ** ncols + bases = 10 ** np.arange(ncols, -1, -1) + + tflags = init + (thist * bases).sum(axis=1) + out[field] = tflags return pd.DataFrame(out).fillna(-9999).astype(int) -- GitLab