使用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
相关产品推荐
相关产品推荐

