Polars是否存在自动将inf转换为nan的配置选项?
Polars 中类似 pandas
use_inf_as_na 的配置方案 Polars 没有和 pandas 完全一致的 use_inf_as_na 全局配置项,但可以通过以下两种方式实现类似效果:
1. 全局配置(推荐)
使用 pl.Config.set_fold_inf_to_null(True) 开启全局设置,该配置会让 Polars 在多数操作(如聚合、过滤、统计计算等)中,将正负无穷(inf/-inf)当作 null 处理。
示例代码:
import polars as pl # 全局开启 inf 按 null 处理 pl.Config.set_fold_inf_to_null(True) # 测试数据 df = pl.DataFrame({"values": [2.5, float("inf"), -float("inf"), 4.2]}) # 过滤非 null 数据(会自动排除 inf 值) print(df.filter(pl.col("values").is_not_null()))
2. 局部列处理
如果不需要全局生效,可以针对特定列显式将 inf 转换为 null:
import polars as pl df = pl.DataFrame({"values": [2.5, float("inf"), -float("inf"), 4.2]}) # 方式1:replace 替换 df = df.with_columns(pl.col("values").replace([float("inf"), -float("inf")], None)) # 方式2:条件转换 df = df.with_columns(pl.col("values").is_infinite().then(None).otherwise(pl.col("values")))
需要注意的是,set_fold_inf_to_null 是让 Polars 在逻辑上把 inf 当作 null 处理,而非直接修改数据存储中的值;如果需要永久将 inf 替换为 null 存储,建议使用局部列处理的方式。
内容的提问来源于stack exchange,提问作者Leo Liu
相关产品推荐
相关产品推荐

