Я попробовал сделать это с помощью шаблона «когда/то/иначе», добавив проверку на нули в качестве первого «когда» (редактировать: теперь я вижу, что эта проверка на самом деле не нужна, но это рядом суть моей проблемы).
Проблема, которую я пытаюсь решить, заключается в том, что значения, возвращаемые в startdate_before_override, — это pl.Float32, а не pl.Date
Код: Выделить всё
import polars as pl
startdate = pl.date(year=2023, month=1, day=1)
data = {"customer": ["Mike", "Jan"], "order_date": [None, None]}
df = pl.DataFrame(data)
(df
.with_columns(
pl
.when(pl.col("order_date").is_null())
.then(startdate)
.when(pl.col("order_date")>startdate)
.then(pl.col("order_date"))
.otherwise(startdate)
.alias("startdate_before_override"),
)
)
Код: Выделить всё
shape: (2, 3)
┌──────────┬────────────┬───────────────────────────┐
│ customer ┆ order_date ┆ startdate_before_override │
│ --- ┆ --- ┆ --- │
│ str ┆ f32 ┆ f32 │ #
Подробнее здесь: [url]https://stackoverflow.com/questions/76757496/why-is-my-value-returned-as-a-pl-float32-and-not-a-pl-date[/url]
Мобильная версия