我正在尝试将数据帧df_test中名为UserAgent的列中的数据中的“ /”字符替换为space(“”)
该列中的数据如下:
像Gecko一样的Mozilla / 5.0(Windows NT 6.1; WOW64; Trident / 7.0; rv:11.0)
我尝试使用
val df_test =spark.sql(s"select UserAgent from df_header_pivot")
df_test.withColumn("UserAgent", regexp_replace("UserAgent", "[/]", ""))
但是我收到错误消息:
笔记本:4:错误:方法值regexp_replace带有替代方法: (e:org.apache.spark.sql.Column,模式:org.apache.spark.sql.Column,替换:org.apache.spark.sql.Column)org.apache.spark.sql.Column (e:org.apache.spark.sql.Column,pattern:String,replacement:String)org.apache.spark.sql.Column 不能应用于(org.apache.spark.sql.ColumnName,org.apache.spark.sql.Column) df_test.withColumn(“ UserAgent”,regexp_replace($“ UserAgent”,lit(“ /”)))
答案 0 :(得分:2)
您需要在$
函数中的列名之前使用regexp_replace
符号。
import org.apache.spark.sql.functions._
val df_test =spark.sql(s"select UserAgent from df_header_pivot")
df_test.withColumn("UserAgent", regexp_replace($"UserAgent", "[/]", " "))
答案 1 :(得分:1)
在使用SparkSQL时,您可以简单地在SQL本身中调用replace
函数,例如:
val df_test =spark.sql(s"select replace(UserAgent, '/', '') AS UserAgent from tmp")
df_test.show
或者使用translate
函数替换不需要正则表达式的字符,例如
df_test
.withColumn("UserAgent", translate($"UserAgent", "/", ""))
.show
不需要正则表达式。