Source code for openstef_meta.utils.datasets

# SPDX-FileCopyrightText: 2025 Contributors to the OpenSTEF project <openstef@lfenergy.org>
#
# SPDX-License-Identifier: MPL-2.0
"""Dataset utility functions for ensemble forecasting."""

import pandas as pd

from openstef_core.datasets import ForecastInputDataset


[docs] def combine_forecast_input_datasets( input_data: ForecastInputDataset, additional_features: ForecastInputDataset | None, join: str = "inner" ) -> ForecastInputDataset: """Combine base forecaster predictions with optional additional features. Args: input_data: ForecastInputDataset containing base forecaster predictions. additional_features: Optional ForecastInputDataset containing additional features to combine. join: Type of join to perform on the datasets. Defaults to "inner". Returns: Combined ForecastInputDataset containing both input data and additional features. """ if not isinstance(additional_features, ForecastInputDataset): return input_data if join != "inner": raise NotImplementedError("Only 'inner' join is currently supported.") df_additional = additional_features.data if input_data.target_column in df_additional.columns: df_additional = df_additional.drop(columns=[input_data.target_column]) df_input = input_data.data df = pd.concat( [df_input, df_additional], axis=1, join="inner", ) return ForecastInputDataset( data=df, sample_interval=input_data.sample_interval, target_column=input_data.target_column, sample_weight_column=input_data.sample_weight_column, forecast_start=input_data.forecast_start, )
__all__ = ["combine_forecast_input_datasets"]