Как заменить все цифры и "." по "" столбца в Dataframes spark scala - PullRequest
1 голос
/ 31 января 2020

Как заменить все цифры и "." т.е. все десятичные числа должны быть заменены на "") столбца в Dataframes spark scala

Например: +56.5 или -64.83 должны быть заменены пустым символом, который ""

Я слежу за

regexp_replace(col("col1"),"\\+|\\-|\\.|0|1|2|3|4|5|6|7|8|9", "")

Есть ли другой лучший способ сделать это

Спасибо

Ответы [ 2 ]

0 голосов
/ 31 января 2020
import org.apache.spark.sql.functions._

val df = meta.core.DataCore.spark.createDataFrame(Seq(
  (0, "+56.5"),
  (1, "-64.83"),
  (2, "+12.1234"),
  (3, "13"),
  (4, "-10.0"),
  (5, "2"),
  (6, "0")
)).toDF("id", "all_digitals")

df
  .withColumn("not_decimals", when(col("all_digitals").contains("."), "").otherwise(col("all_digitals")))
  .show()

Результат:

+---+------------+------------+
| id|all_digitals|not_decimals|
+---+------------+------------+
|  0|       +56.5|            |
|  1|      -64.83|            |
|  2|    +12.1234|            |
|  3|          13|          13|
|  4|       -10.0|            |
|  5|           2|           2|
|  6|           0|           0|
+---+------------+------------+
0 голосов
/ 31 января 2020

Похоже, что для десятичных чисел требуется регулярное выражение, к вопросу можно добавить тег "регулярное выражение". Можно использовать такие регулярные выражения:

// this is pattern to use
val decimalNumbersPattern = "[-+]?[0-9]+\\.[0-9]+"

val df = Seq("Replaced: +56.5", "Replaced: -64.83", "Remains: 44").toDF()
df
  .select(regexp_replace($"value", decimalNumbersPattern, "").alias("result"))

Выход:

+-----------+
|result     |
+-----------+
|Replaced:  |
|Replaced:  |
|Remains: 44|
+-----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...