Pandas中pd.dropna()函数详解:过滤缺失数据的方法与参数说明

向北走
向北走
发布时间:2026-10-14| 6人浏览过
原创

本文详细介绍Pandas库中pd.dropna()函数的用法,用于过滤DataFrame中的缺失数据(NaN)。文章解析了axis、how、thresh、subset和inplace等关键参数的具体含义,并通过多个代码示例演示了按行或列删除含空值数据、设定非空元素最低数量、指定子集判断以及原地修改等操作,帮助开发者高效进行数据清洗。

查看以下代码示例。


DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
Remove missing values.

pd.dropna()函数(参考官方文档)主要用于过滤数据中的缺失值。

在Pandas中,缺失数据通常以NaN(Not a Number)标记。


import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 3), index = list('abcde'), columns = ['one', 'two', 'three'])        # 随机产生5行3列的数据    
df.ix[1, :-1] = np.nan        # 将指定数据定义为缺失
df.ix[1:-1, 2] = np.nan
print(df)


df.dropna()   #删除所有带缺失数据的行

parameters 详解
axis default 0指行,1为列
how {‘any', ‘all'}, default ‘any'指带缺失值的所有行;'all'指清除全是缺失值的行
thresh int,保留含有int个非空值的行
subset 对特定的列进行缺失值删除处理
inplace 这个很常见,True表示就地更改

补充说明:Python-Pandas的dropna()方法用于丢弃包含空值的行或列。

0. 摘要

dropna()方法能够识别DataFrame类型数据中的空值(即缺失值),将这些空值所在的行或列删除后,返回新的DataFrame作为结果。

1. 函数详解

函数定义如下:dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

参数说明:

axis:指定操作的轴。值为0或'index'时表示按行删除;值为1或'columns'时表示按列删除。

how:指定筛选方式。值为'any'时,表示该行或列中只要存在一个空值,即删除该行或列;值为'all'时,表示该行或列中所有数据均为空值,才删除该行或列。

thresh:非空元素的最小数量。类型为int,默认为None。如果该行或列中非空元素的数量小于该指定值,则删除该行或列。

subset:指定子集。类型为列表,包含行或列的索引。当axis=0或'index'时,subset中的元素为列索引;当axis=1或'columns'时,subset中的元素为行索引。由subset限定的子区域作为判断是否删除该行或列的条件范围。

inplace:是否进行原地替换。类型为布尔值,默认为False。若设为True,则在原DataFrame上直接进行修改,此时返回值为None。

2. 示例

创建DataFrame数据:


import numpy as np
import pandas as pd
 
a = np.ones((11,10))
for i in range(len(a)):
    a[i,:i] = np.nan
 
d = pd.DataFrame(data=a)
print(d)

按行删除:只要存在空值,即删除该行


# 按行删除:存在空值,即删除该行
print(d.dropna(axis=0, how='any'))

按行删除:仅当所有数据都为空值时,才删除该行


#  按行删除:所有数据都为空值,即删除该行
print(d.dropna(axis=0, how='all'))

按列删除:若该列非空元素数量小于5,则删除该列


# 按列删除:该列非空元素小于5个的,即删除该列
print(d.dropna(axis='columns', thresh=5))

设置子集:删除第0、5、6、7列均为空的行


# 设置子集:删除第0、5、6、7列都为空的行
print(d.dropna(axis='index', how='all', subset=[0,5,6,7]))

设置子集:删除第5、6、7行中存在空值的列


# 设置子集:删除第5、6、7行存在空值的列
print(d.dropna(axis=1, how='any', subset=[5,6,7]))

原地修改


# 原地修改
print(d.dropna(axis=0, how='any', inplace=True))
print("==============================")
print(d)

以上为个人经验分享,希望能对读者有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。