From be2eb3157c9d4d86ea335e299ecbcd7409a146ca Mon Sep 17 00:00:00 2001 From: Usiel Riedl Date: Fri, 24 Mar 2023 13:53:34 +0800 Subject: [PATCH] perf(postprocessing): improve pivot postprocessing operation (#23465) Co-authored-by: Usiel Riedl --- superset/utils/pandas_postprocessing/pivot.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/superset/utils/pandas_postprocessing/pivot.py b/superset/utils/pandas_postprocessing/pivot.py index e18d58e28e..4083847fff 100644 --- a/superset/utils/pandas_postprocessing/pivot.py +++ b/superset/utils/pandas_postprocessing/pivot.py @@ -87,7 +87,7 @@ def pivot( # pylint: disable=too-many-arguments,too-many-locals if not drop_missing_columns and columns: for row in df[columns].itertuples(): for metric in aggfunc.keys(): - series_set.add(str(tuple([metric]) + tuple(row[1:]))) + series_set.add(tuple([metric]) + tuple(row[1:])) df = df.pivot_table( values=aggfunc.keys(), @@ -101,10 +101,7 @@ def pivot( # pylint: disable=too-many-arguments,too-many-locals ) if not drop_missing_columns and len(series_set) > 0 and not df.empty: - for col in df.columns: - series = str(col) - if series not in series_set: - df = df.drop(col, axis=PandasAxis.COLUMN) + df = df.drop(df.columns.difference(series_set), axis=PandasAxis.COLUMN) if combine_value_with_metric: df = df.stack(0).unstack()