Как удалить дробную часть из столбца данных? - PullRequest
0 голосов
/ 29 июня 2018

Входной кадр данных:

val ds = Seq((1,34.44),
  (2,76.788),
  (3,54.822)).toDF("id","mark")

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

val ds = Seq((1,34),
  (2,76),
  (3,54)).toDF("id","mark")

Я хочу удалить дробную часть из метки столбца, как указано выше. Я искал любые встроенные функции , но ничего не нашел. Как должен выглядеть udf для достижения вышеуказанного результата?

1 Ответ

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

Вы можете просто использовать cast до integer как

import org.apache.spark.sql.functions._
ds.withColumn("mark", $"mark".cast("integer")).show(false)

, который должен дать вам

+---+----+
|id |mark|
+---+----+
|1  |34  |
|2  |76  |
|3  |54  |
+---+----+

Надеюсь, ответ полезен

Обновление

Вы прокомментировали как

Но если в столбце есть какие-либо строковые значения, он становится нулевым, так как мы приводим к целому числу. я не хочу такого поведения

Так что я думаю, что ваш столбец оценки должен быть StringType(), и вы можете использовать regexp_replace

import org.apache.spark.sql.functions._
ds.withColumn("mark", regexp_replace($"mark", "(\\.\\d+)", "")).show(false)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...