diff --git a/doc/release_notes.rst b/doc/release_notes.rst index 62136258..defb0177 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -307,6 +307,8 @@ Upcoming Release * Fix non steel related coal demand during transition (using `sector_ratios_fraction_future`). +* Fix fill missing data in `build_industry_sector_ratios_intermediate`. + PyPSA-Eur 0.10.0 (19th February 2024) ===================================== diff --git a/scripts/build_industry_sector_ratios_intermediate.py b/scripts/build_industry_sector_ratios_intermediate.py index 14e09505..a9cda852 100644 --- a/scripts/build_industry_sector_ratios_intermediate.py +++ b/scripts/build_industry_sector_ratios_intermediate.py @@ -51,11 +51,14 @@ def build_industry_sector_ratios_intermediate(): intermediate_sector_ratios = {} for ct, group in today_sector_ratios.T.groupby(level=0): - today_sector_ratios_ct = ( - group.droplevel(0) - .T.reindex_like(future_sector_ratios) - .fillna(future_sector_ratios) - ) + today_sector_ratios_ct = group.droplevel(0).T.reindex_like(future_sector_ratios) + missing_mask = today_sector_ratios_ct.isna().all() + today_sector_ratios_ct.loc[:, missing_mask] = future_sector_ratios.loc[ + :, missing_mask + ] + today_sector_ratios_ct.loc[:, ~missing_mask] = today_sector_ratios_ct.loc[ + :, ~missing_mask + ].fillna(0) intermediate_sector_ratios[ct] = ( today_sector_ratios_ct * (1 - fraction_future) + future_sector_ratios * fraction_future diff --git a/scripts/solve_network.py b/scripts/solve_network.py index 6aedf54b..67f39d16 100644 --- a/scripts/solve_network.py +++ b/scripts/solve_network.py @@ -1050,7 +1050,7 @@ def solve_network(n, config, solving, **kwargs): # add to network for extra_functionality n.config = config - if rolling_horizon and snakemake.rule == 'solve_operations_network': + if rolling_horizon and snakemake.rule == "solve_operations_network": kwargs["horizon"] = cf_solving.get("horizon", 365) kwargs["overlap"] = cf_solving.get("overlap", 0) n.optimize.optimize_with_rolling_horizon(**kwargs)