在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. 【转载】python 特殊函数 dunder function

    python的特殊方法:另外一种称谓是 dunder function, 就是 under-under function的简写,就是指那些前后都带双下划线的函数. 转自这里: https://blog ...

  2. Centos6.9下安装OpenOffice 4.1.4

    # 对一下时间,时间不准,解压不了yum install -y ntp unzipntpdate -u 202.112.10.36yum install libXext.x86_64 -yyum gr ...

  3. 182. Duplicate Emails

    Write a SQL query to find all duplicate emails in a table named Person. +----+---------+ | Id | Emai ...

  4. 亲测能用的mysqli类,挺好用的

    <?php header('content-type:text/html;charset=utf-8'); /* 掌握满足单例模式的必要条件 (1)私有的构造方法-为了防止在类外使用new关键字 ...

  5. AC日记——[SDOI2017]相关分析 洛谷 P3707

    [SDOI2017]相关分析 思路: 裸线段树: (玄学ac): 代码: #include <bits/stdc++.h> using namespace std; #define max ...

  6. slice切割数组arr=[[0,1],[2,3]]

    for (var i = 0; i < 10; i++) { arr.push(i) } function arrSlice(arr, num) { var arr1 = []; for (va ...

  7. 51nod 1201 (dp)

    整数划分 将N分为若干个不同整数的和,有多少种不同的划分方式,例如:n = 6,{6} {1,5} {2,4} {1,2,3},共4种.由于数据较大,输出Mod 10^9 + 7的结果即可.   In ...

  8. HZAU 1205 Sequence Number(双指针)

    题目链接:http://acm.hzau.edu.cn/problem.php?id=1205 [题意]给你一串数,要求你找到两个数a[i],a[j],使得a[i]<=a[j]且j>=i且 ...

  9. CentOS中Ctrl+Z、Ctrl+C、Ctrl+D的区别

    Ctrl+C和Ctrl+Z都是中断命令,但作用不同. Ctrl+C是发送SIGINT信号,终止一个进程. Ctrl+Z是发送SIGSTOP信号,挂起一个进程,将作业放置到后台(暂停状态).与此同时,可 ...

  10. Visual Studio 2017创建XAML文件

    Visual Studio 2017创建XAML文件   在Visual Stuido 2015中,在已经创建好的项目中添加XAML文件,只要右击项目,单击“添加”|“新建项”命令,然后从“添加新项” ...