Polars:筛选任意列包含缺失值的所有行
在Polars中筛选任意列含缺失值的行
对应pandas中df.loc[df.isnull().any(axis=1), :]的功能,在Polars里可以通过两种简洁的方式筛选出任意列存在缺失值的行:
核心实现代码
# 推荐写法:利用Polars的横向聚合函数 df_filtered = df.filter(pl.any_horizontal(pl.all().is_null())) # 等价写法:贴近pandas的思路逻辑 df_filtered = df.filter(df.select(pl.all().is_null()).any(axis=1))
完整可复现示例
import polars as pl # 输入数据 df = pl.DataFrame({ "a": [1, 2, None, 4, 5], "b": [1.0, 2.0, 3.0, None, 5.0], "c": ["a", "b", None, "d", None], }) # 执行筛选 df_filtered = df.filter(pl.any_horizontal(pl.all().is_null())) print(df_filtered)
输出结果
shape: (3, 3) ┌──────┬──────┬──────┐ │ a ┆ b ┆ c │ │ --- ┆ --- ┆ --- │ │ i64 ┆ f64 ┆ str │ ╞══════╪══════╪══════╡ │ null ┆ 3.0 ┆ null │ │ 4 ┆ null ┆ d │ │ 5 ┆ 5.0 ┆ null │ └──────┴──────┴──────┘
逻辑说明
pl.all().is_null():对DataFrame的每一列元素逐个判断是否为缺失值,生成一个布尔型的中间DataFramepl.any_horizontal(...):对每一行做横向聚合,只要该行有任意一个缺失值(即布尔值为True),就保留该行
内容的提问来源于stack exchange,提问作者sofile9680
相关产品推荐
相关产品推荐

