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

Pandas如何基于指定列删除含空值的行

Pandas如何基于指定列删除含空值的行

嗨,我来帮你搞定这个问题!先还原一下你给出的示例数据:

AB
Cell 1np.nan
Cell 2np.nan
np.nanCell 3
Cell 4Cell 4

你想删除B列包含np.nan的行,先说说你写的两段代码存在的问题:

  • 代码#1:df = df[df['B'] != np.nan],这个写法完全无效。因为np.nan有个特殊性质——它不等于任何值,包括它自己,所以df['B'] != np.nan会返回全False的布尔序列,最后得到的是空DataFrame。
  • 代码#2:这段代码没写完,逻辑不完整,没法正确实现删除操作。

接下来给你两种靠谱的解决方案:

方法一:用dropna()(推荐,最简洁直观)

这是Pandas专门用来删除空值行/列的方法,指定subset参数就能只针对某一列判断空值:

import pandas as pd
import numpy as np

# 先构造示例数据
data = {'A': ['Cell 1', 'Cell 2', np.nan, 'Cell 4'],
        'B': [np.nan, np.nan, 'Cell 3', 'Cell 4']}
df = pd.DataFrame(data)

# 删除B列含空值的行
df = df.dropna(subset=['B'])

执行后得到的结果就是B列无空值的行:

AB
np.nanCell 3
Cell 4Cell 4

方法二:用notna()过滤行

notna()会返回布尔序列,标记每行是否为非空值,用它来索引DataFrame就能保留符合条件的行:

df = df[df['B'].notna()]

这个方法和dropna的效果完全一致,你可以根据自己的习惯选择。

总结一下:处理Pandas里的空值,一定要用专门的isna()/notna()函数或者dropna()方法,别直接用==或!=和np.nan比较,不然很容易踩坑哦~

备注:内容来源于stack exchange,提问作者Task

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 07:09:52