Я пытаюсь применить функцию к столбцу (серии) Dataframe, которая извлекает день недели на основе временных меток в столбце. Однако мне выдается следующее исключение, хотя в документах Polars есть документация для polars.Expr.apply
.
AttributeError: 'Expr' object has no attribute 'apply'.
Моя цель — создать новый столбец названий дней, используя следующий код, где столбец alertTime
имеет тип dtype datetime64
:
def get_day(dt_obj):
days_of_week = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
return days_of_week[dt_obj.weekday()]
# Get the day of the week from the timestamp
df = df.with_columns(
pl.col('alertTime').apply(get_day, return_dtype=pl.Utf8).alias('day_of_week')
)
Может ли кто-нибудь помочь с тем, где я могу ошибаться?
apply
некоторое время назад был переименован в .map_elements().
В предыдущих версиях выводилось предупреждение об устаревании, но в конечном итоге оно было удалено после льготного периода.
Вероятно, вы просматриваете документацию по более старой версии Polars, но на сайте документации есть «переключатель версий»:
Что касается самой задачи, вы также можете выполнить ее с помощью .dt.to_string()
import datetime
import polars as pl
pl.select(
pl.lit(str(datetime.datetime.now()))
.str.to_datetime()
.dt.to_string("%A")
)
shape: (1, 1)
┌─────────┐
│ literal │
│ --- │
│ str │
╞═════════╡
│ Tuesday │
└─────────┘
Спасибо! Мне удалось реализовать ваше предложение следующим образом: df = df.with_columns( pl.col('alertTime').dt.to_string("%A").alias('day_of_week') )
он был переименован в
map_elements
, но, кроме того,apply
/map_elements
снижают производительность, избегайте их как можно чаще