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

如何实现drop_nulls()反向操作:保留含至少一个空值的行

保留含至少一个空值的行(无需手动枚举列)

要实现和drop_nulls()相反的逻辑——保留所有包含至少一个空值的行,同时避免手动列出每一列,用Polars的pl.all()和pl.any_horizontal()就能轻松搞定,不用逐个指定列名。

完整实现代码(匹配你原逻辑)

import polars as pl
import sys

# 筛选出存在空值的行,提取唯一的name字段
null_entries = (
    df.filter(pl.any_horizontal(pl.all().is_null()))
    .select("name")
    .unique()
    .rows()
)

# 打印提示信息
for (name,) in null_entries:
    print(f"Ignoring `{name}` because it has at least one null", file=sys.stderr)

# 移除含空值的行(完成你原代码的收尾操作)
df = df.drop_nulls()

关键逻辑说明

  • pl.all():自动选中DataFrame的所有列,省去手动列"a"、"b"、"c"的麻烦
  • pl.any_horizontal(pl.all().is_null()):对每行做横向检查,只要任意一列是空值,就标记该行符合条件,完美替代多列is_null()的或运算

如果需要直接保留含空值的行

要是你的核心需求是保留而非后续删除这些行,直接用下面的代码:

# 保留所有包含至少一个空值的行
df_with_nulls = df.filter(pl.any_horizontal(pl.all().is_null()))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:57:13