Python Pyspark替换Spark数据框列中的字符串

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或更高版本,您可以

我想通过替换子字符串对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或更高版本,您可以使用以下软件包:

快速解释:

  • 调用函数
    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"), "\\*", ""))