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

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

本文详细介绍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 相关产品和应用

全部下载

专题列表