55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
import pandas as pd
|
|
|
|
|
|
def format_dataframe(
|
|
bess_soc_for_cycle, bess_data, load_profiles_since_start, swap_time
|
|
):
|
|
"""Formats the DataFrame for display in the dashboard."""
|
|
# Create a DataFrame for sites
|
|
# columns = ["Site Name", "MBESS Unit", "Current Load (kW)", "SoC (%)", "Predicted Swap Time"]
|
|
|
|
status_df = pd.DataFrame(
|
|
columns=[
|
|
"Site Name",
|
|
"MBESS Unit",
|
|
"Current Load (kW)",
|
|
"SoC (%)",
|
|
"Predicted Swap Time",
|
|
"Cycle Discharge Profile",
|
|
"Load Profile Since Start",
|
|
]
|
|
)
|
|
|
|
for site in load_profiles_since_start.keys():
|
|
index = next(i for i, d in enumerate(bess_data["units"]) if d["site"] == site)
|
|
soc = bess_data["units"][index]["SoC"]
|
|
current_load = bess_data["units"][index]["current_load_kW"]
|
|
unit_name = bess_data["units"][index]["name"]
|
|
predicted_swap_time = swap_time.get(unit_name, "N/A")
|
|
|
|
status_df = pd.concat(
|
|
[
|
|
status_df,
|
|
pd.DataFrame(
|
|
[
|
|
{
|
|
"Site Name": site,
|
|
"MBESS Unit": unit_name,
|
|
"Current Load (kW)": current_load,
|
|
"SoC (%)": soc * 100, # Convert to percentage
|
|
"Predicted Swap Time": predicted_swap_time,
|
|
"Cycle Discharge Profile": bess_soc_for_cycle[unit_name][
|
|
"SoC"
|
|
].tolist(),
|
|
"Load Profile Since Start": load_profiles_since_start[
|
|
site
|
|
].tolist(),
|
|
}
|
|
]
|
|
),
|
|
],
|
|
ignore_index=True,
|
|
)
|
|
|
|
return status_df
|