如何替换spark scala列中字符串的每个第一个字符?
我有一个数据框,其销售金额以美元符号开头,如如何替换spark scala列中字符串的每个第一个字符?,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,我有一个数据框,其销售金额以美元符号开头,如$123,我想从整个列中删除此$。我正在这样尝试-> val sale2=sale1.withColumn("SaleAmount", regexp_replace(sale1("SalesAmount"), "$", "")) 输出结果与输入结果相同:$123 请帮忙。提前谢谢 您可以使用substr函数传递起始位置和结束位置,并在数据帧中创建新列,或通过应用转换替换
$123
,我想从整个列中删除此$
。我正在这样尝试->
val sale2=sale1.withColumn("SaleAmount", regexp_replace(sale1("SalesAmount"), "$", ""))
输出结果与输入结果相同:$123
请帮忙。提前谢谢 您可以使用
substr
函数传递起始位置和结束位置,并在数据帧中创建新列,或通过应用转换替换数据帧中相同列的值
第一种方法:
//Source data
val df = Seq(("$120"),("$135"),("$4500")).toDF("Value")
//using expr with substr function
import org.apache.spark.sql.functions._
val df1 = df.withColumn("test",expr("substr(Value, 2, length(Value))"))
val df2 = df.withColumn("Test",$"Value".substr(lit(2), length($"Value")-1))
第二种方法:
//Source data
val df = Seq(("$120"),("$135"),("$4500")).toDF("Value")
//using expr with substr function
import org.apache.spark.sql.functions._
val df1 = df.withColumn("test",expr("substr(Value, 2, length(Value))"))
val df2 = df.withColumn("Test",$"Value".substr(lit(2), length($"Value")-1))
在第二种方法中,我们没有对列本身使用expr
操作
您可以看到如下输出:
使用
replace
替换字符串模式regexp\u replace
用于替换regex模式,$
在regex(字符串末尾)中有特殊含义
正则表达式中的
$
表示行尾。要指定文字$
,请像\\$
一样对其进行转义。如果只想替换前导的$
,则模式应为^\\\$
。