From d1f3bbee9513e25a2f6f8bf0da9f6b7a01f4572b Mon Sep 17 00:00:00 2001 From: trevorb1 Date: Sun, 19 Jan 2025 12:02:13 -0800 Subject: [PATCH] correct option data --- src/osemosys_step/main_utils.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/osemosys_step/main_utils.py b/src/osemosys_step/main_utils.py index 12554c0..7ec2fb6 100644 --- a/src/osemosys_step/main_utils.py +++ b/src/osemosys_step/main_utils.py @@ -504,15 +504,20 @@ def apply_option_data(original: pd.DataFrame, option: pd.DataFrame) -> pd.DataFr pd.DataFrame dataframe with option values applied """ - if not (original.columns.to_list()) == (option.columns.to_list()): + expected_columns = original.columns.tolist() + available_columns = [x for x in option if x in expected_columns] + if not all(x in expected_columns for x in available_columns): logger.error(f"columns for original are {original.columns} and columns to apply are {option.columns}") logger.error("Exiting...") sys.exit() option = option[list(original)] # align column headers - df = pd.concat([original, option]) - subset = list(df) - subset.remove("VALUE") # For dropping duplicates - df = df.drop_duplicates(keep="last", subset=subset).reset_index(drop=True) + if original.empty: + df = option + else: + df = pd.concat([original, option]) + sets = list(df) + sets.remove("VALUE") # For dropping duplicates + df = df.drop_duplicates(keep="last", subset=sets).reset_index(drop=True) return df def get_res_cap_next_steps(step: int, n_steps: int, data_path: str, actual_yrs_in_steps: Dict) -> pd.DataFrame: