web-dev-qa-db-ja.com

sparkでRegexp_replaceを使用する方法

私はsparkにかなり慣れていないので、すべての,の列に.

データフレームxと列x4があると仮定します

x4
1,3435
1,6566
-0,34435

出力を次のようにしたい

x4
1.3435
1.6566
-0.34435

私が使用しているコードは

import org.Apache.spark.sql.Column
def replace = regexp_replace((x.x4,1,6566:String,1.6566:String)x.x4)

しかし、次のエラーが表示されます

import org.Apache.spark.sql.Column
<console>:1: error: ')' expected but '.' found.
       def replace = regexp_replace((train_df.x37,0,160430299:String,0.160430299:String)train_df.x37)

構文、ロジック、またはその他の適切な方法に関するヘルプをいただければ幸いです

9
user3420819

_x4_が文字列列であると仮定した場合の再現可能な例を次に示します。

_import org.Apache.spark.sql.functions.regexp_replace

val df = spark.createDataFrame(Seq(
  (1, "1,3435"),
  (2, "1,6566"),
  (3, "-0,34435"))).toDF("Id", "x4")
_

構文はregexp_replace(str, pattern, replacement)であり、次のように変換されます。

_df.withColumn("x4New", regexp_replace(df("x4"), "\\,", ".")).show
+---+--------+--------+
| Id|      x4|   x4New|
+---+--------+--------+
|  1|  1,3435|  1.3435|
|  2|  1,6566|  1.6566|
|  3|-0,34435|-0.34435|
+---+--------+--------+
_
16
mtoto