from io import StringIO import polars as pl import data d = data.load() def property_capacities_weekdays(id: int, scrapeDate: str): extractions = d.extractions_propId_scrapeDate(id, scrapeDate).pl() df_calendar = pl.DataFrame() numWeeks = 0 for row in extractions.rows(named=True): scrapeDate = row['created_at'] df_calendar = pl.read_json(StringIO(row['calendar'])) columnTitles = df_calendar.columns df_calendar = df_calendar.transpose() df_calendar = df_calendar.with_columns(pl.Series(name="dates", values=columnTitles)) df_calendar = df_calendar.with_columns((pl.col("dates").str.to_date())) numWeeks = round((df_calendar.get_column("dates").max() - df_calendar.get_column("dates").min()).days / 7, 0) df_calendar = df_calendar.with_columns(pl.col("dates").dt.weekday().alias("weekday")) df_calendar = df_calendar.drop("dates") df_calendar = df_calendar.group_by("weekday").agg(pl.col("column_0").sum()) df_calendar = df_calendar.with_columns((pl.col("column_0") / numWeeks).alias("weekday")) result = {"scraping-date": scrapeDate, "weekday": df_calendar['weekday'].to_list(), 'capacities': df_calendar['column_0'].to_list()} return result