Цель состоит в том, чтобы получить последнюю GeneralLambda для последних игр, «На выезде» или «Дома», исключая текущую игру. Я думал, что лучше всего это сделать с помощью join_asof, но я пытаюсь заставить его учитывать только прошлые строки и сопоставлять их как по команде, так и по полю.
Вот пример DataFrame для иллюстрации:
Код: Выделить всё
import polars as pl
pl.Config(tbl_rows=15)
df = pl.from_repr("""
┌────────┬─────┬───────┬───────┬───────────────┐
│ Season ┆ Wk ┆ Team ┆ Field ┆ GeneralLambda │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ str ┆ str ┆ f64 │
╞════════╪═════╪═══════╪═══════╪═══════════════╡
│ 2024 ┆ 25 ┆ TeamA ┆ Away ┆ 2.123456 │
│ 2024 ┆ 25 ┆ TeamB ┆ Home ┆ 1.234567 │
│ 2024 ┆ 25 ┆ TeamC ┆ Away ┆ 0.987654 │
│ 2024 ┆ 25 ┆ TeamD ┆ Home ┆ 1.345678 │
│ 2024 ┆ 25 ┆ TeamE ┆ Away ┆ 1.456789 │
│ 2024 ┆ 26 ┆ TeamA ┆ Home ┆ 1.234567 │
│ 2024 ┆ 26 ┆ TeamB ┆ Away ┆ 1.345678 │
│ 2024 ┆ 26 ┆ TeamC ┆ Home ┆ 0.876543 │
│ 2024 ┆ 26 ┆ TeamD ┆ Away ┆ 1.456789 │
│ 2024 ┆ 26 ┆ TeamE ┆ Home ┆ 1.56789 │
│ 2024 ┆ 27 ┆ TeamA ┆ Away ┆ 2.278759 │
│ 2024 ┆ 27 ┆ TeamB ┆ Away ┆ 1.103829 │
│ 2024 ┆ 27 ┆ TeamC ┆ Home ┆ 0.992563 │
│ 2024 ┆ 27 ┆ TeamD ┆ Home ┆ 1.089324 │
│ 2024 ┆ 27 ┆ TeamE ┆ Home ┆ 1.074221 │
└────────┴─────┴───────┴───────┴───────────────┘
""")
- тот же,
Код: Выделить всё
Team - тот же,
Код: Выделить всё
Field - меньше, чем Wk текущей строки.
Код: Выделить всё
Wk
Код: Выделить всё
┌────────┬─────┬───────┬───────┬───────────────┬────────────────────┐
│ Season ┆ Wk ┆ Team ┆ Field ┆ GeneralLambda ┆ Prev_GeneralLambda │
│ --- ┆ --- ┆ --- ┆ --- ┆ --- ┆ --- │
│ i64 ┆ i64 ┆ str ┆ str ┆ f64 ┆ str │
╞════════╪═════╪═══════╪═══════╪═══════════════╪════════════════════╡
│ 2024 ┆ 25 ┆ TeamA ┆ Away ┆ 2.123456 ┆ ALastAwayValue │
│ 2024 ┆ 25 ┆ TeamB ┆ Home ┆ 1.234567 ┆ BLastHomeValue │
│ 2024 ┆ 25 ┆ TeamC ┆ Away ┆ 0.987654 ┆ CLastAwayValue │
│ 2024 ┆ 25 ┆ TeamD ┆ Home ┆ 1.345678 ┆ DLastHomeValue │
│ 2024 ┆ 25 ┆ TeamE ┆ Away ┆ 1.456789 ┆ ELastAwayValue │
│ 2024 ┆ 26 ┆ TeamA ┆ Home ┆ 1.234567 ┆ ALastHomeValue │
│ 2024 ┆ 26 ┆ TeamB ┆ Away ┆ 1.345678 ┆ BLastAwayValue │
│ 2024 ┆ 26 ┆ TeamC ┆ Home ┆ 0.876543 ┆ CLastHomeValue │
│ 2024 ┆ 26 ┆ TeamD ┆ Away ┆ 1.456789 ┆ DLastAwayValue │
│ 2024 ┆ 26 ┆ TeamE ┆ Home ┆ 1.56789 ┆ ELastHomeValue │
│ 2024 ┆ 27 ┆ TeamA ┆ Away ┆ 2.278759 ┆ 2.123456 │
│ 2024 ┆ 27 ┆ TeamB ┆ Away ┆ 1.103829 ┆ 1.345678 │
│ 2024 ┆ 27 ┆ TeamC ┆ Home ┆ 0.992563 ┆ 0.876543 │
│ 2024 ┆ 27 ┆ TeamD ┆ Home ┆ 1.089324 ┆ 1.345678 │
│ 2024 ┆ 27 ┆ TeamE ┆ Home ┆ 1.074221 ┆ 1.567890 │
└────────┴─────┴───────┴───────┴───────────────┴────────────────────┘
Подробнее здесь: https://stackoverflow.com/questions/791 ... g-on-speci
Мобильная версия