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

如何让Polars的.map_elements()遇函数异常时直接报错?1.18.0已修复

更新说明

该问题已在Polars 1.18.0版本中通过PR #20417修复。


问题场景

使用Polars的.map_elements方法将自定义Python函数应用到序列元素时,若函数抛出异常,Polars默认会将结果设为Null而非终止运行。

正常执行示例:

import polars as pl

df = pl.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})

def sum_cols(row):
    return row["A"] + row["B"]

df.with_columns(
    pl.struct(pl.all())
    .map_elements(sum_cols, return_dtype=pl.Int32).alias("summed")
)

当函数抛出异常时,结果列被填充为Null:

def sum_cols(row):
    raise Exception
    return row["A"] + row["B"]

df.with_columns(
    pl.struct(pl.all())
    .map_elements(sum_cols, return_dtype=pl.Int32).alias("summed")
)

解决方案

在map_elements方法中添加strict=True参数,即可让Polars在函数抛出异常时直接终止运行并报错:

import polars as pl

df = pl.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})

def sum_cols(row):
    raise Exception
    return row["A"] + row["B"]

df.with_columns(
    pl.struct(pl.all())
    .map_elements(sum_cols, return_dtype=pl.Int32, strict=True).alias("summed")
)

运行上述代码时,函数抛出的异常会直接中断程序并输出错误信息,不再生成Null值结果。

注意:strict参数仅在Polars 1.18.0及以上版本可用,若使用旧版本需先升级Polars。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:42:47