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

Pandas可扩展的行级仅单列非空校验方法实现

解决方案

核心思路是直接统计每行待校验列的非空值数量,确保不会同时出现2个及以上非空值,天然支持任意数量列的校验需求,无需硬编码每列的校验逻辑。

通用校验代码

全表所有列校验

如果需要校验DataFrame的全部列,直接调用notna()按行求和即可:

# 校验每行非空值数量不超过1个,符合规则要求
assert (df.notna().sum(axis=1) <= 1).all(), "存在行同时包含多个非空值"

指定列校验

如果仅需校验部分列(后续新增列只需修改check_cols列表即可):

# 自定义待校验列列表,扩展列数时仅需调整该列表
check_cols = ["var1", "var2", "var3"]
assert (df[check_cols].notna().sum(axis=1) <= 1).all(), "指定列中存在行同时包含多个非空值"

扩展优化:定位非法行

如果需要快速定位不符合规则的行,可以调整写法直接打印异常行:

check_cols = ["var1", "var2", "var3"]
# 筛选出不符合规则的行
invalid_rows = df[df[check_cols].notna().sum(axis=1) > 1]
assert invalid_rows.empty, f"发现不符合规则的行:\n{invalid_rows}"

额外说明

如果你的业务规则要求每行必须有且仅有1个非空值(不允许全空行),只需将上述代码中的<=1改为==1即可适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:06:04