Я пытаюсь отфильтровать свой пакет данных по Polars на даты, которые ближайшие к данной дате. < /p>
Например: < /p>
import polars
import datetime
data = {
"date": ["2025-01-01", "2025-01-01", "2025-01-01", "2026-01-01"],
"value": [1, 2, 3, 4],
}
df = polars.DataFrame(data).with_columns([polars.col("date").cast(polars.Date)])
< /code>
shape: (4, 2)
┌────────────┬───────┐
│ date ┆ value │
│ --- ┆ --- │
│ date ┆ i64 │
╞════════════╪═══════╡
│ 2025-01-01 ┆ 1 │
│ 2025-01-01 ┆ 2 │
│ 2025-01-01 ┆ 3 │
│ 2026-01-01 ┆ 4 │
└────────────┴───────┘
< /code>
Given a date, say:
date = datetime.date(2024, 12, 31)
< /code>
I want to filter the DataFrame for rows where the date column only includes records that are closest to my required date.
I know that I can do the following:
result = df.with_columns(
diff=(polars.col("date") - date).abs()
).filter(
polars.col("diff") == polars.min("diff")
)
< /code>
shape: (3, 3)
┌────────────┬───────┬──────────────┐
│ date ┆ value ┆ diff │
│ --- ┆ --- ┆ --- │
│ date ┆ i64 ┆ duration[ms] │
╞════════════╪═══════╪══════════════╡
│ 2025-01-01 ┆ 1 ┆ 1d │
│ 2025-01-01 ┆ 2 ┆ 1d │
│ 2025-01-01 ┆ 3 ┆ 1d │
└────────────┴───────┴──────────────┘
< /code>
Is there a more succinct way to achieve this (without creating a new column, for example)?
Подробнее здесь: https://stackoverflow.com/questions/793 ... arest-date