【问题标题】:How to remove blank spaces in Spark table column (Pyspark)如何删除 Spark 表列中的空格(Pyspark)
【发布时间】:2017-12-03 16:33:31
【问题描述】:

我想从特定列 (purch_location) 中的所有值中删除空格。我使用的是 spark 表,而不是数据框或 SQL 表(但如果需要,我可以使用数据框或 SQL 表)。

我的 spark 表是这样生成的:

dataset = spark.table("trans")
cols = dataset.columns
dataset.show(5)
+----------+-------------+-------+--------------------+--------------+---+---+
|purch_date|  purch_class|tot_amt|       serv-provider|purch_location| id|  y|
+----------+-------------+-------+--------------------+--------------+---+---+
|06/11/2017|     Printing|  -0.66|   CARDS AND POCKETS|              |  0|  0|
|03/11/2017|Uncategorized| -17.53|             HOVER  |              |  1|  0|
|02/11/2017|    Groceries| -70.05|1774 MAC'S CONVEN...|     BRAMPTON |  2|  1|
|31/10/2017|Gasoline/Fuel|  -20.0|              ESSO  |              |  3|  0|
|31/10/2017|       Travel|   -9.0|TORONTO PARKING A...|      TORONTO |  4|  0|
+----------+-------------+-------+--------------------+--------------+---+---+

我尝试了以下函数pyspark.sql.functions import regexp_replace

from pyspark.sql.functions import regexp_replace
dataset1=dataset.select(regexp_replace(col("purch_location"),"\\s+",""))

这会删除列中值之后而不是之前的空格。它也摆脱了我想保留的其他专栏。

+-------------------------------------+
|regexp_replace(purch_location, \s+, )|
+-------------------------------------+
|                                     |
|                                     |
|                             BRAMPTON|
|                                     |
|                              TORONTO|
|                                     |
|                             BRAMPTON|
|                             BRAMPTON|
|                                     |
|                                 null|
|                          MISSISSAUGA|
|                                     |
|                             BRAMPTON|

知道如何解决这个问题吗?提前致谢。

【问题讨论】:

    标签: python apache-spark pyspark databricks sparktable


    【解决方案1】:

    如果您使用数据框,这应该可以工作:

    from pyspark.sql.functions import trim
    dataset = dataset.withColumn("purch_location", trim(df. purch_location))
    

    【讨论】:

      【解决方案2】:

      只需使用pyspark.sql.functions.trim:

      将指定字符串列两端的空格剪掉。

      from pyspark.sql.functions import trim
      
      dataset.select(trim("purch_location"))
      

      转换为空:

      from pyspark.sql.functions import length trim, when
      
      df.select(when(length(trim("purch_location")) != 0, trim("purch_location")))
      

      我使用的是 spark 表而不是数据框

      SparkSession.table 返回DataFrame

      spark.range(1).createOrReplaceTempView("df")
      type(spark.table("df"))
      # pyspark.sql.dataframe.DataFrame
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-26
        • 2018-04-11
        • 2017-03-05
        • 1970-01-01
        • 2020-07-05
        • 1970-01-01
        • 2013-04-06
        相关资源
        最近更新 更多