You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Polars的apply创建新列时遇AttributeError错误求助

解决Polars中Expr无apply方法的错误

错误原因

Polars的表达式(Expr)对象没有apply方法,apply是DataFrame层面的方法。你在使用pl.col()创建表达式后,应该用map方法来调用自定义Python函数。

方案一:替换apply为map

直接修改你的代码,将apply换成map即可适配原函数:

df = df.with_columns(
    pl.col("AH_PROC_REALIZADO")
    .map(get_procedure_description)
    .alias("proced_descr")
)

方案二:使用Polars原生函数(推荐)

Python自定义函数(UDF)会拖慢Polars的矢量化性能,建议用Polars原生字符串操作实现相同逻辑,效率更高:

# 定义映射字典
proceds = {
    '41612': 'CIRURGIA ONCOLOGICA',
    '30401': 'RADIOTERAPIA',
    # 补充其他键值对
}

# 构建前缀匹配的条件表达式
expr = pl.lit(None)
for code, desc in proceds.items():
    expr = pl.when(pl.col("AH_PROC_REALIZADO").str.starts_with(code)).then(desc).otherwise(expr)

# 添加新列
df = df.with_columns(expr.alias("proced_descr"))

这个方法通过str.starts_with实现前缀匹配,完全利用Polars的矢量化计算,处理大数据量时比UDF快数倍。

内容的提问来源于stack exchange,提问作者mmbr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 08:29:54