Polars: заполните недостающие месяцы для каждой группы.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Polars: заполните недостающие месяцы для каждой группы.

Сообщение Anonymous »

Я хочу заполнить недостающие месяцы в фрейме данных для каждой группы на основе минимальной и максимальной даты в каждой группе.
Этот подход работает, но использует Polars.map_elements .

Код: Выделить всё

import polars as pl
import numpy as np
from datetime import date

DATA_SIZE = 10000000
raw_df = pl.DataFrame({
"id": np.random.choice(range(0, 10000), DATA_SIZE),
"date": pl.date_range(date(1940, 1, 1), date(2020, 1, 1), interval="1mo", eager=True).sample(DATA_SIZE, with_replacement=True),
"value": np.random.rand(DATA_SIZE)
})

clean_df = (raw_df
.group_by("id")
.agg(
pl.struct(pl.col("date").min().alias("startDate"), pl.col("date").max().alias("endDate"))
.map_elements(lambda row: pl.date_range(row["startDate"], row["endDate"], interval="1mo", eager=True)).alias("date")
)
.explode("date")
.join(raw_df, how="left", on=["id", "date"])
.with_columns(pl.col("value").fill_null(0))
)
Теперь, когда date_range принимает выражения, должно быть более элегантное и быстрое решение, но я не могу заставить его работать: TypeError: невозможно создать литерал выражения для значения типа встроенная_функция_или_метод.

Код: Выделить всё

(raw_df
.group_by("id")
.agg(
pl.col("date").min().alias("startDate"), pl.col("date").max().alias("endDate")
)
.select(
id, pl.date_range(pl.col("startDate"), pl.col("endDate"), interval="1mo")
)
)
Как использовать диапазон дат с выражениями?

Подробнее здесь: https://stackoverflow.com/questions/740 ... -per-group
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»