我很新兴,并希望对数据框的列执行操作,以便用,
替换列中的所有.
假设有一个数据帧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)
非常感谢语法,逻辑或任何其他合适方式的任何帮助
答案 0 :(得分:10)
这是一个可重复的示例,假设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|
+---+--------+--------+
答案 1 :(得分:0)
我们可以使用map
方法进行此转换:
scala> df.map(each => {
(each.getInt(0),each.getString(1).replace(",", "."))
})
.toDF("Id","x4")
.show
Output:
+---+--------+
| Id| x4|
+---+--------+
| 1| 1.3435|
| 2| 1.6566|
| 3|-0.34435|
+---+--------+