Python Pyspark替换Spark数据框列中的字符串
我想通过替换子字符串对Spark Dataframe列执行一些基本的词干分析。最快的方法是什么 在我当前的用例中,我有一个要规范化的地址列表。例如,此数据帧:Python Pyspark替换Spark数据框列中的字符串,python,apache-spark,pyspark,Python,Apache Spark,Pyspark,我想通过替换子字符串对Spark Dataframe列执行一些基本的词干分析。最快的方法是什么 在我当前的用例中,我有一个要规范化的地址列表。例如,此数据帧: id address 1 2 foo lane 2 10 bar lane 3 24 pants ln 将成为 id address 1 2 foo ln 2 10 bar ln 3 24 pants ln 对于Spark 1.5或更高版本,您可以
id address
1 2 foo lane
2 10 bar lane
3 24 pants ln
将成为
id address
1 2 foo ln
2 10 bar ln
3 24 pants ln
对于Spark 1.5或更高版本,您可以使用以下软件包: 快速解释:
- 调用函数
,将列添加(或替换,如果名称存在)到数据框中李>withColumn
- 函数
将通过替换与模式匹配的所有子字符串来生成一个新列regexp\u replace
- 适用于scala
import org.apache.spark.sql.functions.regexp_replace
import org.apache.spark.sql.functions.col
data.withColumn("addr_new", regexp_replace(col("addr_line"), "\\*", ""))
您的Spark版本是什么?请记住,regexp\u replace的第一个参数是指正在更改的列,第二个参数是要查找的regex,最后一个参数是如何替换它。我可以在管道中使用regexp\u replace吗?感谢您是否可以更改此代码中的多个项?@elham您可以使用此函数更改适合一列的regexp表达式的任何值:
import org.apache.spark.sql.functions.regexp_replace
import org.apache.spark.sql.functions.col
data.withColumn("addr_new", regexp_replace(col("addr_line"), "\\*", ""))