Как переименовать заголовки столбцов в фрейме данных Scala - PullRequest
0 голосов
/ 16 ноября 2018

Как я могу сделать string.replace ("fromstr", "tostr") на фрейме данных Scala. Насколько я вижу, withColumnRenamed выполняет замену для всех столбцов, а не только для заголовков.

1 Ответ

0 голосов
/ 17 ноября 2018

withColumnRenamed переименовывает только имена столбцов, данные остаются прежними.Если вам нужно изменить контекст строк, вы можете использовать один из следующих вариантов:

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

val inputDf = Seq("to_be", "misc").toDF("c1")
val resultd1Df = inputDf
  .withColumn("c2", regexp_replace($"c1", "^to_be$", "not_to_be"))
  .select($"c2".as("c1"))
resultd1Df.show()

val resultd2Df = inputDf
  .withColumn("c2", when($"c1" === "to_be", "not_to_be").otherwise($"c1"))
  .select($"c2".as("c1"))
resultd2Df.show()

def replace(mapping: Map[String, String]) = udf(
  (from: String) => mapping.get(from).orElse(Some(from))
)

val resultd3Df = inputDf
  .withColumn("c2", replace(Map("to_be" -> "not_to_be"))($"c1"))
  .select($"c2".as("c1"))
resultd3Df.show()

Входной фрейм данных:

+-----+
|   c1|
+-----+
|to_be|
| misc|
+-----+

Результирующий фрейм данных:

+---------+
|       c1|
+---------+
|not_to_be|
|     misc|
+---------+

Выможно найти список доступных функций Spark там

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...