使用Python Polars遇AttributeError:'Expr'对象无'apply'属性求助
问题原因
你遇到的AttributeError是因为Polars在较新版本中已经将Expr.apply()方法重命名为Expr.map(),原apply方法已被移除,所以当前版本的Polars Expr对象不再有apply属性。
解决方案
方案1:改用map()适配自定义函数
直接把代码里的apply替换成map就能正常运行:
def get_day(dt_obj): days_of_week = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'] return days_of_week[dt_obj.weekday()] df = df.with_columns( pl.col('alertTime').map(get_day, return_dtype=pl.Utf8).alias('day_of_week') )
方案2:用Polars内置日期方法(更高效)
Polars自带日期时间处理API,比自定义函数的map操作性能更好,推荐使用:
- 直接获取星期名称:用
dt.strftime("%A")直接输出英文星期全称df = df.with_columns( pl.col('alertTime').dt.strftime("%A").alias('day_of_week') ) - 自定义星期名称映射:如果需要自定义名称(比如其他语言),可以先拿星期索引再映射
days_of_week = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'] df = df.with_columns( pl.col('alertTime').dt.weekday().map_elements(lambda idx: days_of_week[idx], return_dtype=pl.Utf8).alias('day_of_week') )
内容的提问来源于stack exchange,提问作者CodeWhisperer
相关产品推荐
相关产品推荐

