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

Polars如何删除含无穷值(np.inf/-np.inf)的行?

在Polars中删除含无穷值的行

要删除包含np.inf或-np.inf的行,同时保留NaN值以便后续单独处理,你可以用Polars的表达式系统实现,这是最符合Polars风格的做法:

核心思路

通过is_infinite()方法检测无穷值,结合any_horizontal()判断每行是否存在任意一个无穷值,最后用filter()过滤掉这些行。

代码示例

import polars as pl
import numpy as np

# 创建测试DataFrame
df = pl.DataFrame({
    "col1": [1.0, np.inf, 3.0, np.nan],
    "col2": [-np.inf, 2.0, np.nan, 4.0],
    "col3": [5.0, 6.0, 7.0, 8.0]
})

# 删除含无穷值的行
clean_df = df.filter(~pl.col("*").is_infinite().any_horizontal())

print(clean_df)

代码解释

  • pl.col("*"):选中DataFrame的所有列
  • .is_infinite():对每个元素判断是否为无穷值(np.inf或-np.inf),返回布尔值的DataFrame
  • .any_horizontal():检查每行是否有至少一个True(即存在无穷值)
  • ~:取反,保留所有没有无穷值的行

针对特定列处理

如果你只需要检查某几列的无穷值,把pl.col("*")换成指定列名即可:

# 只检查col1和col2列的无穷值
clean_df = df.filter(~pl.col(["col1", "col2"]).is_infinite().any_horizontal())

这种方法完全基于Polars的向量化表达式,效率远高于逐行循环,同时完美保留NaN值,满足你单独处理NaN的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:24:52