Skip to content

Commit

Permalink
📊 Implement special sorting for filtered map
Browse files Browse the repository at this point in the history
  • Loading branch information
jh0ker committed May 28, 2024
1 parent 569e394 commit 4d2833d
Showing 1 changed file with 24 additions and 1 deletion.
25 changes: 24 additions & 1 deletion ddj_cloud/scrapers/talsperren/exporters/map.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,21 @@ def run(self, df_base: pd.DataFrame) -> pd.DataFrame:
return df_map


def _sort_with_special_cases(df: pd.DataFrame, pairs: list[tuple[str, str]]):
df.insert(0, "__sort", df["capacity_mio_m3"] * 1_000_000.0)

for hauptsperre, vorsperre in pairs:
if any(name not in df["name"].unique() for name in [hauptsperre, vorsperre]):
continue

df.loc[df["name"] == vorsperre, "__sort"] = (
df.loc[df["name"] == hauptsperre, "__sort"].values[0] - 1.0
)

df.sort_values(by="__sort", ascending=False, inplace=True)
df.drop(columns=["__sort"], inplace=True)


def _make_filtered_map_exporter(federation_names: Sequence[str]) -> MapExporter:
class FilteredMapExporter(MapExporter):
filename = f"filtered_map_{slugify('_'.join(federation_names))}"
Expand All @@ -225,7 +240,15 @@ def run(self, df_base: pd.DataFrame) -> pd.DataFrame:
FEDERATION_RENAMES.get(fed_name, fed_name) for fed_name in federation_names
]

df_filtered = df_map.loc[df_map["federation_name"].isin(translated_names)]
df_filtered = df_map.loc[df_map["federation_name"].isin(translated_names)].copy()

_sort_with_special_cases(
df_filtered,
[
("Große Dhünntalsperre", "Vorsperre Große Dhünn"),
("Rurtalsperre Hauptsee", "Rurtalsperre Obersee"),
],
)

df_filtered["name"].replace(
RESERVOIR_RENAMES_BREAKS,
Expand Down

0 comments on commit 4d2833d

Please sign in to comment.