Использование Polars с Python и выдача следующего исключения: AttributeError: объект «Expr» не имеет атрибута «apply»

Я пытаюсь применить функцию к столбцу (серии) 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')
)

Может ли кто-нибудь помочь с тем, где я могу ошибаться?

он был переименован в map_elements, но, кроме того, apply/map_elements снижают производительность, избегайте их как можно чаще

ignoring_gravity 16.07.2024 12:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
1
465
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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') )

CodeWhisperer 16.07.2024 12:46

Другие вопросы по теме