diff --git a/docs/tutorials/run-simulations/simulation_tasking.md b/docs/tutorials/run-simulations/simulation_tasking.md index fd8e8ee..c3e9191 100644 --- a/docs/tutorials/run-simulations/simulation_tasking.md +++ b/docs/tutorials/run-simulations/simulation_tasking.md @@ -380,7 +380,7 @@ where: **Additional options**: -- `--dataframe-key {KEY}`: specify which dataframe to download (default: `EnergyAndPeak`). other options may include `HourlyData` if hourly data was configured +- `--dataframe-key {KEY}`: specify which dataframe to download (default: `EnergyAndPeak`). if hourly data was configured, each time series is a separate dataframe (e.g. `HourlyData.Zone_Mean_Air_Temperature`, `HourlyData.Zone_Air_Relative_Humidity`) - `--include-csv`: include CSV export in addition to parquet (CSV is automatically included for `EnergyAndPeak` dataframe) **Example with all options**: diff --git a/src/globi/pipelines.py b/src/globi/pipelines.py index 74d6cae..4839130 100644 --- a/src/globi/pipelines.py +++ b/src/globi/pipelines.py @@ -260,7 +260,10 @@ def post_geometry_callback(idf: IDF) -> IDF: hourly_df = hourly_df.set_index(old_ix, append=True) if spec.parent_experiment_spec.hourly_data_config.does_dataframe_output: - dfs["HourlyData"] = hourly_df + for meter_name in hourly_df.columns.get_level_values("Meter").unique(): + variable_df = hourly_df.xs(meter_name, level="Meter", axis=1) + dataframe_key = f"HourlyData.{meter_name.replace(' ', '')}" + dfs[dataframe_key] = variable_df if spec.parent_experiment_spec.hourly_data_config.does_file_output: hourly_data_outpath = tempdir / "outputs_hourly_data.pq" hourly_df.to_parquet(hourly_data_outpath)