Python Pandas中dropna()删除特定行与列详解
本文详解Python Pandas中dropna()方法删除特定行与列的参数用法,包括axis、how、thresh和subset。针对仅基于单列缺失值删除行的需求,提供通过fillna填充后索引定位删除的替代方案,帮助精准过滤数据。
dropna() 方法过滤任何含有缺失值的行
在pandas.DataFrame中,若某行任意字段存在空值,则整行会被过滤,此时使用dropna()方法较为适用。以下示例展示了只要任意列包含空数据,整行即被剔除的情况。然而实际场景中,我们常需依据某一特定列(指标)的数据状态来过滤行,类似于Excel的筛选功能,该如何实现?
>>> import pandas as pd
>>> data = pd.DataFrame([[1.,6.5,3.],[1.],[],[6.5,3.]],index=list('abcd'),columns=list('def'))
>>> data
d e f
a 1.0 6.5 3.0
b 1.0 NaN NaN
c NaN NaN NaN
d 6.5 3.0 NaN
>>> data.dropna() #任意列只要有一个为空数据,则整行都干掉
d e f
a 1.0 6.5 3.0
方法一:dropna() 其他参数解析
原文链接中,我们引入了dropna()方法的其他参数。
DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
参数说明:
- axis:
- axis=0: 删除包含缺失值的行
- axis=1: 删除包含缺失值的列
- how: 与axis配合使用
- how=‘any’ :只要有缺失值出现,就删除该行或列
- how=‘all’: 所有的值都缺失,才删除行或列
- thresh: axis中至少有thresh个非缺失值,否则删除。比如 axis=0,thresh=10:标识如果该行中非缺失值的数量小于10,将删除改行
- subset: list,在哪些列中查看是否有缺失值
- inplace: 是否在原数据上操作。如果为真,返回None,否则返回新的copy,去掉了缺失值
>>> data.dropna(axis=0,subset=['e']) #axis=0,删除行,在subset的列中进行查看
d e f
a 1.0 6.5 3.0
d 6.5 3.0 NaN
方法二:替换并删除,Python pandas 如果某列值为空,过滤删除所在行数据
以上述data数据为例,若希望当“e”列数值为NaN时删除对应行(即“b、c”行),同时保留其他行,直接使用dropna()似乎较为繁琐。此时的处理思路如下:
fillna()给空值填充一个数值(如999999)index.tolist()找出值为填充值所在行的索引drop根据索引干掉对应的行
>>> data['e']=data['e'].fillna(999999)
>>> find_index=data[(data.e==999999)].index.tolist()
>>> find_index
['b', 'c']
>>> data.drop(find_index)
d e f
a 1.0 6.5 3.0
d 6.5 3.0 NaN
总结
到此这篇关于python pandas数据处理之删除特定行与列的文章就介绍到这了,更多相关python pandas删除特定行列内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









