How to drop rows of Pandas DataFrame whose value in certain columns is NaN - 删除带有NaN的行

在用 pandas 处理数据的时候,经常会遇到有 NaN 的行,不方便进行后续操作,那这种情况应该怎么处理呢?

数据准备

我们随机生成了10x3列的数据,然后针对某些数据赋值 NaN。

import pandas as pdimport numpy as npdf = pd.DataFrame(np.random.randn(10,3), columns=['col1', 'col2', 'col3'])

df.iloc[::2,0] = np.nandf.iloc[::4,1] = np.nandf.iloc[::3,2] = np.nanprint df

#        col1      col2      col3# 0       NaN       NaN       NaN# 1 -0.498336 -0.960804  0.705309# 2       NaN -2.120032  2.123329# 3  0.791883 -0.283840       NaN# 4       NaN       NaN -1.241788# 5 -0.399644 -0.968515 -1.509056# 6       NaN  0.897637       NaN# 7  1.826128  1.015091 -0.497022# 8       NaN       NaN -1.889871# 9  0.379287 -1.762229       NaN

pandas.notnull

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.notnull.html

可以接受Series 或者 DataFrame 类型的数据

pandas.notnull 被设计用来取代 np.isfinite / numpy.isnan

pd.notnull(df['col1'])

# 0    False# 1     True# 2    False# 3     True# 4    False# 5     True# 6    False# 7     True# 8    False# 9     True# Name: col1, dtype: bool

print pd.notnull(df)

#     col1   col2   col3# 0  False  False  False# 1   True   True   True# 2  False   True   True# 3   True   True  False# 4  False  False   True# 5   True   True   True# 6  False   True  False# 7   True   True   True# 8  False  False   True# 9   True   True  False

np.isfinite / numpy.isnan

np.isfinite 会对数据进行判断,如果是有限数据返回True。我们可以通过对不同列的bool值组合来满足我们的取值要求。
numpy.isnan 判断是否是NaN

np.isfinite(df['col1'])

# 1    True# 3    True# 5    True# 7    True# 9    True# Name: col1, dtype: bool

df1 = df[np.isfinite(df['col1'])]print df1

#        col1      col2      col3# 1 -0.498336 -0.960804  0.705309# 3  0.791883 -0.283840       NaN# 5 -0.399644 -0.968515 -1.509056# 7  1.826128  1.015091 -0.497022# 9  0.379287 -1.762229       NaN

drop

https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.dropna.html

drop 可以接受多个参数:

axis : {0 or ‘index’, 1 or ‘columns’}, or tuple/list thereofPass tuple or list to drop on multiple axeshow : {‘any’, ‘all’}any : if any NA values are present, drop that labelall : if all values are NA, drop that labelthresh : int, default Noneint value : require that many non-NA valuessubset : array-likeLabels along other axis to consider, e.g. if you are dropping rows these would be a list of columns to includeinplace : boolean, default FalseIf True, do operation inplace and return None.
# 默认是删除有NaN的行print df.dropna() 

#        col1      col2      col3# 1  1.944899 -1.792510 -0.612904# 5 -0.609380  1.087689 -1.145582# 7 -2.045037  1.043837  0.429135

print df.dropna(how='all')  #删除全部是NaN的行#        col1      col2      col3# 1  1.944899 -1.792510 -0.612904# 2       NaN  0.780487 -1.239197# 3 -1.050320 -0.121033       NaN# 4       NaN       NaN -0.537213# 5 -0.609380  1.087689 -1.145582# 6       NaN -0.721761       NaN# 7 -2.045037  1.043837  0.429135# 8       NaN       NaN -0.096989# 9  1.514520  0.224193       NaN

更多的可以参考,drop的官方说明。

pandas nan判断_【跟着stackoverflow学Pandas】 删除带有NaN的行相关推荐

  1. pandas rolling方法_【干货】pandas相关工具包

    未来更名:ChallengeHub  1 Pandas 介绍 Pandas是python的一个数据分析包,最初由AQR Capital Management于2008年4月开发,并于2009年底开源出 ...

  2. python做外贸_跟着销售学python(3)---开发微信公平台(1)

    跟着销售学python(3)--- 开发微信公共平台(1) 首先交代一下, 目前我的学习背景啊: 我自己是一个创业的外贸服务公司, 自己主要做销售,学python主要目的是为了工作上的帮助吧. 自己的 ...

  3. pandas修改数据类型_如何正确在pandas里使用inplace参数

    在本篇中,我们来简单介绍一下inpalce参数以及使用. 在pandas 中 ,inplace 参数在很多函数中都会有,它的作用是:是否在原对象基础上进行修改 ​ inplace = True:不创建 ...

  4. pandas合并数据集-【老鱼学pandas】

    有两个数据集,我们想把他们的结果根据相同的列名或索引号之类的进行合并,有点类似SQL中的从两个表中选择出不同的记录并进行合并返回. 合并 首先准备数据: import pandas as pd imp ...

  5. python pandas for循环_高逼格使用Pandas加速代码,向for循环说拜拜!

    原标题:高逼格使用Pandas加速代码,向for循环说拜拜! 作者:George Seif 编译:公众号翻译部 全网进行中··· 你为什么劝入/劝退Quant? 前言 使用Pandas datafra ...

  6. 先学python还是先学数据库_跟着销售学python8-微信平台初次见识数据库(6)

    本来是计划跟着learn python the hard way ,继续下去, 不过中途补充一下,网页的基础知识吧,也不耽搁了. [摘录]:用来记下,之前不理解的 地方? 1.web.py  引入数据 ...

  7. JAVA复合判断_一起来学Java8(四)——复合Lambda

    在一起来学Java8(二)--Lambda表达式中我们学习了Lambda表达式的基本用法,现在来了解下复合Lambda. Lambda表达式的的书写离不开函数式接口,复合Lambda的意思是在使用La ...

  8. python项目策划书_跟着销售学python系列(1)--实践项目骨架(1)

    暂时不对自己的背景做任何的交代,  为什么写这个系列, 参加YC培训课最大的总结, 就是别写别思考了. 以前的写的,慢慢搬家过来吧. 学习计划: ✅  learn  python the hard w ...

  9. operate函数_跟着 redux 学 compose组合函数

    ▲ 点击上方蓝字关注我 ▲ 把你的心 我的心串一串 串一株幸运草 串一个同心圆 文 / 景朝霞 来源公号 / 朝霞的光影笔记 ID / zhaoxiajingjing 目录0 / 热热身1 / red ...

最新文章

  1. ubuntu 下root用户无法访问声音设备的解决方案
  2. CentOS 6.2安装
  3. 利用找因子来找方程解的个数
  4. GCPC2014 C Bounty Hunter
  5. js react根据几个颜色点计算区间任意数值对应颜色
  6. 第三章 汇编语言和汇编软件
  7. python实现学生成绩聚类分析_聚类分析Python实现
  8. 【9603】最大整数
  9. Basic--Java基本语法
  10. 无法更新标识列 wechatid_天津塘沽企业标识标牌设计制作安装的过程
  11. matlab多行注释的三种方法
  12. java获取method_从Method中获取完整类名和方法名
  13. Java基础案例4-8:模拟物流快递系统程序设计
  14. 物业设备与设施管理【2】
  15. VScode启动流程
  16. 若依框架获取和修改当前登录用户信息
  17. 【自学Python】Python IDLE使用
  18. 1.0.使用matplotlib模块简单绘图
  19. 网页播放视频没有进度条怎么可以实现倍速播放
  20. 算法分析与设计实验报告三——动态规划算法

热门文章

  1. 初级菜鸟程序员浅谈开源和共享精神
  2. cuSPARSE库:(二)静态库的支持
  3. CPU的乱序执行、指令流水线技术
  4. CoreOS coreos-assembler文档
  5. FreeBSD 11.0-发布公告
  6. 一周文章导读:在线试用 Linux 系统;Shell实践;VFS;Makefile陷阱;Shell陷阱
  7. Django:模型层ORM
  8. pandas创建和文件读取笔记(一)
  9. php 连接池 idletime,聊聊hikari连接池的idleTimeout及minimumIdle属性
  10. 计算机学院科研,科研概况