- Один (df) записывает даты продажи товаров.
- Другой (df2) содержит дополнительные сведения, включая даты и
значения для товаров.
Вот пример данных:
Код: Выделить всё
import polars as pl
from datetime import datetime
df = pl.DataFrame({
"ID" : [1,2,3],
"Time" : [datetime(1,1,2),datetime(1,1,3),datetime(1,1,3)],
})
df2 = pl.DataFrame({
"ID" : [1,1,1,2,2,3],
"Time" : [
datetime(1,1,2),
datetime(1,1,3),
datetime(1,1,4),
datetime(1,1,4),
datetime(1,1,5),
datetime(1,1,4),
],
"Value": [10,10,10,20,20,30],
})
Код: Выделить всё
(
df
.with_columns(
(pl.col("Time") - pl.duration(days=1)).alias("-1"),
(pl.col("Time") + pl.duration(days=1)).alias("+1"),
).join(df2, on="ID", how="left")
.filter(pl.col("Time_right").is_between("-1", "+1"))
)
Код: Выделить всё
(
df
.with_columns(
(pl.col("Time") - pl.duration(days=1)).alias("-1"),
(pl.col("Time") + pl.duration(days=1)).alias("+1"),
).join_where(
df2,
pl.col("Time_right").is_between("-1", "+1"),
pl.col("ID") == pl.col("ID_right")
)
)
Код: Выделить всё
InvalidOperationError: only 1 binary comparison allowed as join conditionПодробнее здесь: https://stackoverflow.com/questions/792 ... ate-ranges