Bootstrap

dataframe 空值替换为0_如何替换DataFrame列中的空值?

如何替换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 |

+ --------- + --- +

;