Pandas DataFrame如何筛选多列至少存在一个非空值的行
Pandas 行筛选实现方案
核心代码
假设你的原始DataFrame命名为df,直接执行以下代码即可得到筛选后的结果:
import pandas as pd # 指定需要检查非空值的列 check_columns = ["column A", "column B", "column C"] # 筛选:指定列中至少存在1个非空值的行 df_filtered = df[df[check_columns].notna().any(axis=1)]
逻辑说明
df[check_columns].notna():将指定3列的非空值映射为True,空值(NaN/NA)映射为False,返回布尔类型的DataFrameany(axis=1):按行判断布尔值,只要该行存在至少1个True就返回True,所有列都为空则返回False- 用返回的布尔序列对原DataFrame做索引,即可保留符合要求的行,剔除三列全空的行
用你提供的示例输入运行,会自动剔除ID为03、05的三列全空行,输出结果和预期完全一致。
特殊情况兼容
如果你的表中空白是空字符串而非Pandas默认的空值类型,需要先做一步替换再执行筛选:
# 先把所有空字符串替换为Pandas可识别的空值 df = df.replace("", pd.NA) # 再执行上文的筛选逻辑 df_filtered = df[df[check_columns].notna().any(axis=1)]
内容的提问来源于stack exchange,提问作者Daven1
相关产品推荐
相关产品推荐

