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

如何使用pandas提取表格中非finished状态且包含NaN的行

问题原因

pandas中NaN和任意值做等于/不等于比较时,返回结果都是False,所以你原来的筛选条件df['col2'] != 'finished'遇到col2为NaN的行时,判断结果为False,自然就不会被筛选出来。

解决方法

有两种常用的修改方案:

方案1:使用pandas自带的不等判断方法ne()

Series.ne()方法原生支持对NaN的处理,默认会将NaN判定为和指定值不相等,直接替换筛选条件即可:

tab_not_finished = df[df['col2'].ne('finished')]

方案2:显式增加NaN判断条件

在原有逻辑基础上,加上col2为空的判断,两个条件满足任意一个就会被筛选:

tab_not_finished = df[(df['col2'] != 'finished') | df['col2'].isna()]

调整后完整代码

import pandas as pd
from io import StringIO

data="""
col1    col2    col3
A1  finished    1234
A2  ongoing 1235
A3  NaN 1236
A4  finished    1237
A5  started 1238
A6  finished    1239
"""

data_tsv = StringIO(data)

df = pd.read_csv(data_tsv, sep="\t", skiprows=1)

# 替换为任意一种方案即可,这里以ne()方法为例
tab_not_finished = df[df['col2'].ne('finished')]
print(tab_not_finished)

运行后就可以得到你期望的包含NaN行的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 09:45:03