如何替换DataFrame df 的列 Field1 中的空值?
字段1字段2
AA
12 BB
此命令没有提供预期的结果:
df.na.fill(" Field1 ",Seq(" Anonymous"))
预期结果:
字段1字段2
匿名AA
12 BB
解决方案
填充:返回一个新的DataFrame,用值替换
数字列中的null或NaN值。
两件事:
一个空字符串是不是null或NaN,因此您必须为此使用case语句。
将文本值赋予数字列时,填充似乎无法正常工作。
失败Null替换为填充/文本:
scala>显示
+ ---- + --- +
| f1 | f2 |
+ ---- + --- +
| null | AA |
| 12 | BB |
+ ---- + --- +
scala> a.na.fill(" Anonymous",Seq(" f1"))。show
+ ---- + --- +
| f1 | f2 |
+ ---- + --- +
| null | AA |
| 12 | BB |
+ ---- + --- +
工作示例-使用包含所有数字的空值:
scala>显示
+ ---- + --- +
| f1 | f2 |
+ ---- + --- +
| null | AA |
| 12 | BB |
+ ---- + --- +
scala> a.na.fill(1,Seq(" f1"))。show
+ --- + --- +
| f1 | f2 |
+ --- + --- +
| 1 | AA |
| 12 | BB |
+ --- + --- +
失败示例(空字符串)而不是Null):
scala> b。显示
+ --- + --- +
| f1 | f2 |
+ --- + --- +
| | AA |
| 12 | BB |
+ --- + --- +
scala> b.na.fill(1,Seq(" f1"))。show
+ --- + --- +
| f1 | f2 |
+ --- + --- +
| | AA |
| 12 | BB |
+ --- + --- +
案例声明修复示例:
scala> b。显示
+ --- + --- +
| f1 | f2 |
+ --- + --- +
| | AA |
| 12 | BB |
+ --- + --- +
scala> b.select(when(col(" f1")===""," Anonymous")。otherwise(col(" f1"))。as(" f1"),col(" f2"))。show
+ --------- + --- +
| f1 | f2 |
+ --------- + --- +
|匿名| AA |
| 12 | BB |
+ --------- + --- +