1.摘要
dropna()方法,能够找到DataFrame类型数据的空值(缺失值),将空值所在的行/列删除后,将新的DataFrame作为返回值返回。
2.函数详解
函数形式: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或者‘column',subset中元素为行的索引。由subset限制的子区域,是判断是否删除该行/列的条件判断区域。
inplace:是否原地替换。布尔值,默认为False。如果为True,则在原DataFrame上进行操作,返回值为None。
3.示例
创建DataFrame数据:
1
2
3
4
5
6
7
8
9
|
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)
|
按行删除:存在空值,即删除该行
1
2
|
# 按行删除:存在空值,即删除该行
print (d.dropna(axis = 0 , how = 'any' ))
|
按行删除:所有数据都为空值,即删除该行
1
2
|
# 按行删除:所有数据都为空值,即删除该行
print (d.dropna(axis = 0 , how = 'all' ))
|
按列删除:该列非空元素小于5个的,即删除该列
1
2
|
# 按列删除:该列非空元素小于5个的,即删除该列
print (d.dropna(axis = 'columns' , thresh = 5 ))
|
设置子集:删除第0、5、6、7列都为空的行
1
2
|
# 设置子集:删除第0、5、6、7列都为空的行
print (d.dropna(axis = 'index' , how = 'all' , subset = [ 0 , 5 , 6 , 7 ]))
|
设置子集:删除第5、6、7行存在空值的列
1
2
|
# 设置子集:删除第5、6、7行存在空值的列
print (d.dropna(axis = 1 , how = 'any' , subset = [ 5 , 6 , 7 ]))
|
原地修改
1
2
3
4
|
# 原地修改
print (d.dropna(axis = 0 , how = 'any' , inplace = True ))
print ( "==============================" )
print (d)
|
实例扩展:
代码实现
1
2
3
4
5
|
import pandas as pd
data = pd.read_excel( 'test.xlsx' ,sheet_name = 'Sheet1' )
datanota = data[data[ '销售人员' ].notna()]
print (datanota)
|
输出结果
D:\Python\Anaconda\python.exe D:/Python/test/EASdeal/test.py
城市 销售金额 销售人员
0 北京 10000 张丽丽
1 上海 50000 潇潇
2 深圳 60000 笨笨笨
3 成都 40000 达达Process finished with exit code 0
到此这篇关于python如何删除列为空的行的文章就介绍到这了,更多相关python删除列为空的行方法内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://www.py.cn/jishu/gaoji/19605.html