在Scala中,Double类型的空值保存为NaN,其他保存为null。对于Double可以直接使用:bianliang.isNaN判断其是否是空值,那么在一个多行多列的DataSet或者DataFrame中怎么进行处理呢。

一、几种查找空值的方法

1、Column方法

column.isNull/column.isNotNull/column.isNaN

  1. df("col1").isNull
  2. df.filter(df("col1").isNull)就可以获取所有col1列为空值的行了。
  3. //获取col1字段所有空列
  4. df.filter(df("col1").isNull).count()
  5. df.filter(df("col1").isNotNull).count()

2、类sql方法

  1. //获取col1字段所有空列
  2. data1.filter("col1 is null").select("col1").limit(10).show
  3. //获取col1字段的所有非空列
  4. data1.filter("col1 is not null").select("col1").limit(10).show
  5. data1.filter("col1 <>''").select("col1").limit(10).show

二、na方法

  1. val naDF:DataFrameNaFunctions=df.na

调用na方法会返回一个DataFrameNaFunctions。其只有3个方法,drop、fill、replace。

2.1 na.drop方法

2.1.1 删除所有列的空值以及NaN

  1. val resNull=df.na.drop()

返回一个新DF,剔除了包含空值的行。

2.1.2 删除某一列的空值和NaN

  1. val res =df.na.drop(Array("col1","col2"))

2.1.3 删除某一列的非空非NaN但是值低于10的。

  1. df.na.drop(10,Array("col1","col2"))

2.2 na.fill方法

2.2.1 填充所有空值的列

  1. val res123=df.na.fill("新值")
  2. val res123=df.na.fill(10)​

2.2.2 对指定的空值进行填充

传入一个值,以及所有需要用此值填充的Array,或者使用Map,按照列进行不同填充。

  1. val res2=data1.na.fill(value="wangxiao111",cols=Array("gender","yearsmarried") )
  2. val res3=data1.na.fill(Map("gender"->"wangxiao222","yearsmarried"->"wangxiao567") )

2.3 na.replace方法

2.3.1 将指定列的指定值替换为对应的值

  1. df.na.replace("col1",Map(1->2)) //将col1列的值为1替换为2.
  2. df.na.replace(Array("col1","col2"),Map(1->2))​​
  3. df.na.replace[Int]("col1",Map(1->2))//可以添加泛型,Map中的key和value类型必须与其保持一致。

Spark2-对于Null/Nan的处理的更多相关文章

  1. js判断undefined类型,undefined,null,NaN的区别

    js判断undefined类型 今天使用showModalDialog打开页面,返回值时.当打开的页面点击关闭按钮或直接点浏览器上的关闭则返回值是undefined   所以自作聪明判断       ...

  2. Javascript 中的非空判断 undefined,null, NaN的区别

    JS 数据类型 在介绍这三个之间的差别之前, 先来看一下JS  的数据类型. 在 Java ,C这样的语言中, 使用一个变量之前,需要先定义这个变量并指定它的数据类型,是整型,字符串型,.... 但是 ...

  3. (转载)Javascript 中的非空判断 undefined,null, NaN的区别

    原文地址:https://blog.csdn.net/oscar999/article/details/9353713 在介绍这三个之间的差别之前, 先来看一下JS  的数据类型. 在 Java ,C ...

  4. Spark Dataset DataFrame空值null,NaN判断和处理

    Spark Dataset DataFrame空值null,NaN判断和处理 import org.apache.spark.sql.SparkSession import org.apache.sp ...

  5. Spark2 Dataset DataFrame空值null,NaN判断和处理

    import org.apache.spark.sql.SparkSession import org.apache.spark.sql.Dataset import org.apache.spark ...

  6. JavaScript 中undefined,null,NaN的区别

    1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型.var a1;var a2 = true;va ...

  7. js中undefined,null,NaN的区别

    1.类型分析: js中的数据类型有undefined,boolean,number,string,object等5种,前4种为原始类型,第5种为引用类型.var a1;var a2 = true;va ...

  8. R语言中的特殊值 NA NULL NaN Inf

    这几个都是R语言中的特殊值,都是R的保留字, NA:Not available  表示缺失值   用 is.na() 来判断是否为缺失值 NULL:表示空值,即没有内容  用 is.null() 来判 ...

  9. Objective-C之null NaN undefined

    http://blog.csdn.net/siemenliu/article/details/6568306

随机推荐

  1. springboot的mvn与gradle启动方式

    1 很简单,直接鼠标右击项目,run启动项目 2 项目目录下的命令行  mvn spring-boot:run 或者  gradlew bootRun 3 进入libs下或者target下 java ...

  2. logger日志的几个方法

    logger.debug.logger.info.logger.warn.logger.error.logger.fatal 的区别: 相同处:它们的作用都是把错误信息写到文本日志里 不同的是它们表示 ...

  3. POJ 1845 Sumdiv (整数唯一分解定理)

    题目链接 Sumdiv Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 25841   Accepted: 6382 Desc ...

  4. 单断言VS多断言

    STST 想和大家讨论一下,一个测试用例里只做一个断言还是一个用例里做多个相关的断言 比如有一个查询函数Query(id) 返回[姓名,性别,年龄] 那么是在一个测试用例里对这三个属性进行断言好? 还 ...

  5. 洛谷P3941入阵曲

    题目传送门 这道题也是今年湖南集训队Day8的第一题,昨天洛谷的公开赛上又考了一遍,来发个记录(其实是因为五月天,另外两道题分别是将军令和星空,出这次题目的人肯定同为五迷(✪㉨✪)) 话不多说.先理解 ...

  6. 洛谷——P1416 攻击火星

    P1416 攻击火星 题目描述 一群外星人将要攻击火星. 火星的地图是一个n个点的无向图.这伙外星人将按照如下方法入侵,先攻击度为0的点(相当于从图中删除掉它),然后是度为1的点,依此类推直到度为n- ...

  7. 洛谷——P1630 求和

    P1630 求和 题目描述 求1^b+2^b+……+a^b的和除以10000的余数. 输入输出格式 输入格式: 第一行包含一个正整数N,表示共有N组测试数据: 接下来N行,每行包含两个正整数a和b. ...

  8. PMP CMM

    CMM和PMP是两个不同的概念域,是用来解决不同问题的.我们所说的CMM,准确的说应该是叫做能力成熟度模型,北京猴子说的软件能力成熟度模型实际上应该称为SW-CMM,是CMM的一个子集.PMP可以看做 ...

  9. 【转载】Virtual Box下配置Host-Only联网方式详解

    其实网络这类相关的文章很多,我只是想结合自己的实际情况,把我的经验写下来,给那些需要的人们吧. 主机:windows 7 虚拟机:CentOS6.0 VirtualBox:4.2.0 虚拟机在安装好之 ...

  10. [BZOJ5251][九省联考2018]劈配(网络流)

    5251: [2018多省省队联测]劈配 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 33  Solved: 22[Submit][Status][ ...