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

如何在pandas中通过含空值的列表筛选DataFrame符合条件的记录

问题解答

首先回答你的核心疑问:不能直接把空值加入判断列表通过isin()实现统一筛选,但也不需要单独筛选后合并,只要调整判断逻辑就可以实现一步筛选。

问题根因

pandas 内置的isin()方法默认无法匹配NaN空值,核心原因是NaN的比较特性:在pandas/numpy的规则中,NaN == NaN永远返回False,所以哪怕你手动把numpy.nan加入判断列表,isin()也识别不到对应的空值记录。

优化后的实现方案

直接在布尔判断逻辑里补充空值识别条件即可,修改后的函数如下:

import pandas as pd
import numpy as np

def GetEmpty(df, on, items_list=['']):
    column = df[on]
    # 同时匹配自定义枚举值和空值
    boolean_series = column.isin(items_list) | column.isna()
    empty_df = df[boolean_series]
    return empty_df

# 调用测试
empty_df = GetEmpty(df, 'Isin', ['','N/A', 'NODATA'])

用你提供的示例DataFrame测试,会正确返回Isin为NaN、NODATA的两条记录,符合筛选要求。

如果需要适配更多场景(比如部分场景不需要包含空值),可以增加开关参数灵活控制:

def GetEmpty(df, on, items_list=[''], include_na=True):
    column = df[on]
    boolean_series = column.isin(items_list)
    if include_na:
        boolean_series = boolean_series | column.isna()
    return df[boolean_series]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:36:04