From 085d2a5bf0acb73cee14337002fc870a86f1a151 Mon Sep 17 00:00:00 2001 From: Johannes Elferich Date: Wed, 21 Feb 2024 21:26:45 -0500 Subject: [PATCH] Fix pandas FutureWarnings (#53) --- src/starfile/parser.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/starfile/parser.py b/src/starfile/parser.py index 567a885..4de697d 100644 --- a/src/starfile/parser.py +++ b/src/starfile/parser.py @@ -15,6 +15,11 @@ if TYPE_CHECKING: from os import PathLike +def _apply_numeric(col: pd.Series) -> pd.Series: + try: + return pd.to_numeric(col) + except ValueError: + return col class StarParser: filename: Path @@ -110,9 +115,9 @@ def _parse_loop_block(self) -> pd.DataFrame: comment='#', keep_default_na=False ) - df_numeric = df.apply(pd.to_numeric, errors='ignore') + df_numeric = df.apply(_apply_numeric) # Replace columns that are all NaN with the original string columns - df_numeric.loc[:, df_numeric.isna().all()] = df.loc[:, df_numeric.isna().all()] + df_numeric[df_numeric.columns[df_numeric.isna().all()]] = df[df_numeric.columns[df_numeric.isna().all()]] df = df_numeric df.columns = loop_column_names return df