Код: Выделить всё
df_original
Код: Выделить всё
df_original = pl.DataFrame(
{
"station": ["A", "A", "A", "A", "B", "B", "B", "B"],
"ice_cream_date": [1, 2, 3, 4, 1, 2, 3, 4],
"customers": [10, 20, 30, 5, 5, 7, 4, 10],
"event": [0, 1, 0, 1, 1, 0, 1, 0],
}
)
- — закодированная дата.
Код: Выделить всё
ice_cream_date
- представляет количество клиентов
Код: Выделить всё
customers
- представляет собой двоичную кодировку, в которой находится инспектор
Код: Выделить всё
event
Код: Выделить всё
df_evnets
Код: Выделить всё
df_events = pl.DataFrame(
{
"events": [1, 1, 1, 1],
"ice_cream_date": [2, 4, 1, 3],
"station": ["A", "A", "B", "B"],
"customers": [20, 5, 5, 4],
"evaluation_span": [10, 2, 2, 2],
"evaluation_end_date": [4, 4, 3, 4],
"evaluation_end_date_customer": [5, 5, 4, 10],
"good_customer": [30, 10, 8, 12],
"bad_customer": [5, 0, 4, 3],
}
)
- — количество дней после даты проверки.
Код: Выделить всё
evaluation_span
- — последний день проверки. (если date+evaluation_span > максимальная доступная дата, Assessment_end_date — это максимальная доступная дата.)
Код: Выделить всё
evaluation_end_date
- — количество клиентов на дату Assessment_end_date в df_original
Код: Выделить всё
evaluation_end_date_customer
- — это хороший порог, по которому инспектор может дать станции оценку «хорошо» в конкретную дату Ice_cream_date
Код: Выделить всё
good_customer
- : плохой порог
Код: Выделить всё
bad_customer
Я хочу отметить, есть ли станция присваивается хороший или плохой рейтинг для каждого ненулевого события.
Если инспектор видит, что количество клиентов превышает (опускается ниже) хорошее( сначала пороговое значение «плохо»), станции будет присвоена оценка «хорошо» или «плохо» независимо от продолжительности события
Ожидаемый результат:
Код: Выделить всё
shape: (4, 7)
┌────────────────┬─────────┬────────────────────┬──────┬─────┬────────────────┬────────────────────┐
│ ice_cream_date ┆ station ┆ evaluation_custome ┆ good ┆ bad ┆ evaluation_end ┆ actual_evaluation_ │
│ --- ┆ --- ┆ rs ┆ --- ┆ --- ┆ --- ┆ end_date │
│ i64 ┆ str ┆ --- ┆ i64 ┆ i64 ┆ i64 ┆ --- │
│ ┆ ┆ i64 ┆ ┆ ┆ ┆ i64 │
╞════════════════╪═════════╪════════════════════╪══════╪═════╪════════════════╪════════════════════╡
│ 2 ┆ A ┆ 30 ┆ 1 ┆ 0 ┆ 0 ┆ 3 │
│ 4 ┆ A ┆ 5 ┆ 0 ┆ 0 ┆ 1 ┆ 4 │
│ 1 ┆ B ┆ 4 ┆ 0 ┆ 1 ┆ 1 ┆ 3 │
│ 3 ┆ B ┆ 10 ┆ 0 ┆ 0 ┆ 1 ┆ 4 │
└────────────────┴─────────┴────────────────────┴──────┴─────┴────────────────┴────────────────────┘
- — количество клиентов, использованных для оценки.
Код: Выделить всё
evaluation_customers
- — это двоичная метка «хорошо», указывающая, что в течение (event_date, event_date+evaluation_span] дает ли инспектор хорошую оценку станции за определенное событие проверки.
Код: Выделить всё
good
< ли>— неверная двоичная метка.Код: Выделить всё
bad
- — это конечная метка оценки, указывающая, что количество клиентов не превысило (опустилось ниже) порогового значения «хорошо» или «плохо» в течение (event_date, event_date+span)
Код: Выделить всё
evaluation_end
< ли>— дата окончания оценки (достигнуто хорошее или плохое пороговое значение)Код: Выделить всё
actual_evaluation_end_date

Подробнее здесь: https://stackoverflow.com/questions/781 ... first-hits