【问题标题】:Pyspark replace strings in Spark dataframe columnPyspark 替换 Spark 数据框列中的字符串
【发布时间】:2016-08-30 11:57:59
【问题描述】:

我想通过替换子字符串对 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 版本是多少?

标签: python apache-spark pyspark


【解决方案1】:

对于 Spark 1.5 或更高版本,您可以使用 functions 包:

from pyspark.sql.functions import *
newDf = df.withColumn('address', regexp_replace('address', 'lane', 'ln'))

快速解释:

  • 调用函数withColumn 以向数据框中添加(或替换,如果名称存在)一列。
  • 函数regexp_replace 将通过替换与模式匹配的所有子字符串来生成一个新列。

【讨论】:

  • 只要记住regexp_replace的第一个参数是指被改变的列,第二个是要查找的正则表达式,最后一个是如何替换它。
  • 我可以在管道中使用 regexp_replace 吗?谢谢
  • 我们可以在此代码中更改多个项目吗?
  • @elham 您可以使用此函数为一列更改适合正则表达式 表达式 的任何值:spark.apache.org/docs/2.2.0/api/R/regexp_replace.html
  • 如何在 PySpark 中减去两个 string columns within a single dataframe
【解决方案2】:

对于斯卡拉

import org.apache.spark.sql.functions.regexp_replace
import org.apache.spark.sql.functions.col
data.withColumn("addr_new", regexp_replace(col("addr_line"), "\\*", ""))

【讨论】:

    猜你喜欢
    • 2019-12-28
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    相关资源
    最近更新 更多