且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何替换DataFrame列中的空值?

更新时间:2023-02-19 15:23:50

填充:返回一个新的DataFrame来替换其中的null或NaN值 具有值的数字列.

Fill: Returns a new DataFrame that replaces null or NaN values in numeric columns with value.

两件事:

  1. 一个空字符串不为null或NaN,因此您必须为此使用case语句.
  2. 在数字列中输入文本值时,填充似乎效果不佳.

失败,将Null替换为填充/文本:

scala> a.show
+----+---+
|  f1| f2|
+----+---+
|null| AA|
|  12| BB|
+----+---+

scala> a.na.fill("Anonymous", Seq("f1")).show
+----+---+
|  f1| f2|
+----+---+
|null| AA|
|  12| BB|
+----+---+

工作示例-对所有数字使用空值:

scala> a.show
+----+---+
|  f1| f2|
+----+---+
|null| AA|
|  12| BB|
+----+---+


scala> a.na.fill(1, Seq("f1")).show
+---+---+
| f1| f2|
+---+---+
|  1| AA|
| 12| BB|
+---+---+

失败示例(空字符串而不是空):

scala> b.show
+---+---+
| f1| f2|
+---+---+
|   | AA|
| 12| BB|
+---+---+


scala> b.na.fill(1, Seq("f1")).show
+---+---+
| f1| f2|
+---+---+
|   | AA|
| 12| BB|
+---+---+

案例声明修复示例:

scala> b.show
+---+---+
| f1| f2|
+---+---+
|   | AA|
| 12| BB|
+---+---+


scala> b.select(when(col("f1") === "", "Anonymous").otherwise(col("f1")).as("f1"), col("f2")).show
+---------+---+
|       f1| f2|
+---------+---+
|Anonymous| AA|
|       12| BB|
+---------+---+