Как изменить значения столбца DataFrame на регистр заголовка в Scala. - PullRequest
0 голосов
/ 27 июня 2018

Кадр входных данных

val ds = Seq((1,"play framework"),
  (2,"spark framework"),
  (3,"spring framework ")).toDF("id","subject")

Я ожидаю заглавный регистр в столбце субъект , как показано ниже.

 val ds = Seq((1,"Play Framework"),
  (2,"Spark Framework"),
  (3,"Spring Framework ")).toDF("id","subject")

Я мог бы использовать опцию Использовать нижнюю из org.apache.spark.sql.functions

как ds.select($"subject", lower($"subject")).show

для преобразования в нижний регистр. Но как я могу сделать результат, как я ожидал, как указано выше?

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

есть встроенная функция , называемая initcap, которая работает именно так, как вам требуется

import org.apache.spark.sql.functions._
ds.withColumn("subject", initcap(col("subject"))).show(false)

официальная документация говорит это

public static Column initcap(Column e) Returns a new string column by converting the first letter of each word to uppercase. Words are delimited by whitespace.

0 голосов
/ 27 июня 2018

Вы можете сделать это

val captalizeUDF=udf((str:String)=>str.split(" ").map(word=>word.trim.capitalize).mkString(" "))

ds.select($"id",captalizeUDF($"subject").alias("subject")).show

                     or

ds.select($"id",initcap($"subject").alias("subject")).show

Пример вывода:

+---+----------------+
| id|         subject|
+---+----------------+
|  1|  Play Framework|
|  2| Spark Framework|
|  3|Spring Framework|
+---+----------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...