From ee72a6e5598c277259632306ebc0ee30e55c3dd7 Mon Sep 17 00:00:00 2001 From: Daniel Weindl Date: Thu, 22 Oct 2026 16:14:21 +0200 Subject: [PATCH] Fix pandas 3.1 deprecation warnings in overview Avoid the deprecated `inplace` keyword (PDEP-8), and avoid filling all-empty (float) columns with strings, which will raise in future pandas versions. Co-Authored-By: Claude Opus 5.5 --- src/python/benchmark_models_petab/overview.py | 24 ++++++++++++------- .../benchmark_models_petab/overview_v2.py | 3 +-- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/python/benchmark_models_petab/overview.py b/src/python/benchmark_models_petab/overview.py index f1fb4d6..a634730 100644 --- a/src/python/benchmark_models_petab/overview.py +++ b/src/python/benchmark_models_petab/overview.py @@ -177,14 +177,23 @@ def make_sbml4humans_urls( ] +def _fillna_str(df: pd.DataFrame, column: str, value: str) -> pd.DataFrame: + """Fill missing values in a string column. + + Columns without any values are read as float, which can't be filled with + strings. + """ + return df.astype({column: "string"}).fillna({column: value}) + + def get_noise_distributions(observable_df): if petab.NOISE_DISTRIBUTION in observable_df.columns: - observable_df = observable_df.fillna( - value={petab.NOISE_DISTRIBUTION: petab.NORMAL} + observable_df = _fillna_str( + observable_df, petab.NOISE_DISTRIBUTION, petab.NORMAL ) if petab.OBSERVABLE_TRANSFORMATION in observable_df.columns: - observable_df = observable_df.fillna( - value={petab.OBSERVABLE_TRANSFORMATION: petab.LIN} + observable_df = _fillna_str( + observable_df, petab.OBSERVABLE_TRANSFORMATION, petab.LIN ) noise_distrs = [ tuple(e.values) @@ -199,8 +208,8 @@ def get_noise_distributions(observable_df): else: if petab.OBSERVABLE_TRANSFORMATION in observable_df.columns: - observable_df = observable_df.fillna( - value={petab.OBSERVABLE_TRANSFORMATION: petab.LIN} + observable_df = _fillna_str( + observable_df, petab.OBSERVABLE_TRANSFORMATION, petab.LIN ) noise_distrs = [ (e, petab.NORMAL) @@ -337,8 +346,7 @@ def get_overview_df() -> pd.DataFrame: summary = get_summary(petab_problem, petab_problem_id) data.append(summary) df = pd.DataFrame(data) - df.set_index([index_column], inplace=True) - return df + return df.set_index([index_column]) start_overview_table = "\n\n" diff --git a/src/python/benchmark_models_petab/overview_v2.py b/src/python/benchmark_models_petab/overview_v2.py index 29ffb36..1126b9d 100644 --- a/src/python/benchmark_models_petab/overview_v2.py +++ b/src/python/benchmark_models_petab/overview_v2.py @@ -160,5 +160,4 @@ def get_overview_df() -> pd.DataFrame: for petab_problem_id in v2.MODELS ] df = pd.DataFrame(data, columns=list(columns)) - df.set_index([index_column], inplace=True) - return df + return df.set_index([index_column])