Pandas(1): 删除数据为空的行 |
您所在的位置:网站首页 › dataframe删除空值行 › Pandas(1): 删除数据为空的行 |
1. 解决问题:
在pandas中处理并删除指定G中为空值的行。 删除所有为NaN的值,如果拿出第0行,第二列数据,与第1行第二列数据,得到如下: 貌似可以做两个数据进行等于的逻辑判断,但是实际上是不可以的,如下所示:他们返回的值是False, 但是实际上,两个值为空,应该相等的。 如果我们使用如下的变量进行验证,这个与使用pandas索引出来处理的结果是不一样的,在此处,我没有找到原因(如果有小伙伴知道的话,请留言告诉我) 所以我们不能使用空值来判断,经过调研,了解到,有np.isnan()函数可以调用,进行如下操作,我们可以通过调用API的方式来进行判断该值是否空值。 所以,我们想到使用判断该值是否为空,来进行删除空值的所在的行。 def data_dropnan(data): for i in data.index: if np.isnan(data.iloc[i][1]): data = data.drop([i]) return data但是运行以后会报错: IndexError: single positional indexer is out-of-bounds这个问题我还没有解决,我不知道怎么解决这个问题,如果有小伙伴知道,请私信我。我的理解是,在 i 循环到最后一个数时,判断下标越界了。 修改以后函数如下: def data_dropnan(data): for i in data.index: if i < data.shape[0]: if np.isnan(data.iloc[i][1]): print(i) data = data.drop(i) return data输出仍然不满足,并没有删除我认为的空值: 我不知道为什么会这样,待后续研究。
尝试使用现成API,了解到有np.dropna()函数,使用效果如下: 修改threshold,得到: 再次修改参数,得到如下,如果要删除空值的话,需要配置subset参数,该参数指定特定列,而axis=0,表示删除特定行。 以上的操作方式均高效,也不具有灵活性,经过google,百度搜索得到某函数:该函数表示删除数据data中,D列,所有为None的行,同理,更换None,可以删除特定值的行。 data2 = data[~data.D.isin([None])]3.结论 使用data[~data.D.isin([?])]的方式删除指定数据的行,pandas中的drop函数适合删除整行整列,在本文中没有找到为什么drop()无法实现删除元素的原因。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |