Поляры получают количество событий до «этого» события, но в течение заданной продолжительности.Python

Программы на Python
Ответить
Anonymous
 Поляры получают количество событий до «этого» события, но в течение заданной продолжительности.

Сообщение Anonymous »

Я изо всех сил пытался создать функцию — счетчик, который подсчитывает количество событий до каждого события, при этом каждое предыдущее событие должно было произойти в течение заданного периода времени (dt). Я знаю, как это сделать для всех предыдущих событий, это легко сделать, используя cum_sum и over данного столбца. Но если я хочу сделать это только с событиями, например, за последние 2 дня, как мне это сделать??
Ниже показано, как я это делаю (неправильно) с помощью cum_count.

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

import polars as pl
from datetime import date

df = pl.DataFrame(
data = {
"Event":["Rain","Sun","Rain","Sun","Rain","Sun","Rain","Sun"],
"Date":[
date(2022,1,1),
date(2022,1,2),
date(2022,1,2),
date(2022,1,3),
date(2022,1,3),
date(2022,1,5),
date(2022,1,5),
date(2022,1,8)
]
}
)

df.with_columns(
pl.col("Date").cum_count().over("Event").alias("cum_count")
)
вывод

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

shape: (8, 3)
┌───────┬────────────┬───────────┐
│ Event ┆ Date       ┆ cum_count │
│ ---   ┆ ---        ┆ ---       │
│ str   ┆ date       ┆ u32       │
╞═══════╪════════════╪═══════════╡
│ Rain  ┆ 2022-01-01 ┆ 1         │
│ Sun   ┆ 2022-01-02 ┆ 1         │
│ Rain  ┆ 2022-01-02 ┆ 2         │
│ Sun   ┆ 2022-01-03 ┆ 2         │
│ Rain  ┆ 2022-01-03 ┆ 3         │
│ Sun   ┆ 2022-01-05 ┆ 3         │
│ Rain  ┆ 2022-01-05 ┆ 4         │
│ Sun   ┆ 2022-01-08 ┆ 4         │
└───────┴────────────┴───────────┘
Я хотел бы вывести следующее:

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

shape: (8, 3)
┌───────┬────────────┬───────────┐
│ Event ┆ Date       ┆ cum_count │
│ ---   ┆ ---        ┆ ---       │
│ str   ┆ date       ┆ u32       │
╞═══════╪════════════╪═══════════╡
│ Rain  ┆ 2022-01-01 ┆ 0         │
│ Sun   ┆ 2022-01-02 ┆ 0         │
│ Rain  ┆ 2022-01-02 ┆ 1         │
│ Sun   ┆ 2022-01-03 ┆ 1         │
│ Rain  ┆ 2022-01-03 ┆ 2         │
│ Sun   ┆ 2022-01-05 ┆ 1         │
│ Rain  ┆ 2022-01-05 ┆ 1         │
│ Sun   ┆ 2022-01-08 ┆ 0         │
└───────┴────────────┴───────────┘

(Желательно решение, которое хорошо масштабируется..)
Спасибо
Пробовал безуспешно

Подробнее здесь: https://stackoverflow.com/questions/751 ... n-duration
Ответить

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

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

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

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

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