【问题标题】:Pyspark: Convert column to lowercasePyspark:将列转换为小写
【发布时间】:2018-04-21 03:25:07
【问题描述】:

我想将列内的值转换为小写。目前,如果我使用 lower() 方法,它会抱怨列对象不可调用。由于 SQL 中有一个名为 lower() 的函数,我假设有一个不涉及 UDF 或编写任何 SQL 的原生 Spark 解决方案。

【问题讨论】:

    标签: pyspark


    【解决方案1】:

    col 旁边导入lower

    from pyspark.sql.functions import lower, col
    

    使用lower(col("bla")) 将它们组合在一起。在完整的查询中:

    spark.table('bla').select(lower(col('bla')).alias('bla'))
    

    相当于SQL查询

    SELECT lower(bla) AS bla FROM bla
    

    要保留其他列,请执行

    spark.table('foo').withColumn('bar', lower(col('bar')))
    

    不用说,这种方法比使用 UDF 更好,因为 UDF 必须调用 Python(这是一个缓慢的操作,而 Python 本身也很慢),并且比用 SQL 编写更优雅。

    【讨论】:

      【解决方案2】:

      你可以结合使用 concat_ws 和 split

      from pyspark.sql.functions import *
      
      df.withColumn('arr_str', lower(concat_ws('::','arr'))).withColumn('arr', split('arr_str','::')).drop('arr_str')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-03
        • 1970-01-01
        • 2020-12-07
        • 1970-01-01
        • 1970-01-01
        • 2015-08-06
        • 1970-01-01
        • 2018-07-27
        相关资源
        最近更新 更多