Scala - заполнить пустой столбец другим столбцом - PullRequest
0 голосов
/ 17 января 2019

Я хочу повторить проблему , упомянутую здесь в фреймах данных Scala. Я пытался использовать следующие подходы, но пока безуспешно.

Input

Col1  Col2
A       M
B       K
null    S

Ожидаемый результат

Col1  Col2
A       M
B       K
S <---- S

Подход 1

val output = df.na.fill("A", Seq("col1"))

Метод fill не принимает столбец в качестве (первого) ввода.

Подход 2

val output = df.where(df.col("col1").isNull)

Я не могу найти подходящий метод для вызова после того, как я определил нулевые значения.

Подход 3

val output = df.dtypes.map(column =>
  column._2 match {
    case "null" => (column._2 -> 0)
  }).toMap

Я получаю StringType ошибку.

1 Ответ

0 голосов
/ 17 января 2019

Я бы использовал when/otherwise, как показано ниже:

import spark.implicits._
import org.apache.spark.sql.functions._

val df = Seq(
  ("A", "M"), ("B", "K"), (null, "S")
).toDF("Col1", "Col2")

df.withColumn("Col1", when($"Col1".isNull, $"Col2").otherwise($"Col1")).show
// +----+----+
// |Col1|Col2|
// +----+----+
// |   A|   M|
// |   B|   K|
// |   S|   S|
// +----+----+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...