【问题标题】:PySpark SQL: consolidating .withColumn callsPySpark SQL:合并 .withColumn 调用
【发布时间】:2016-08-14 01:12:22
【问题描述】:

我有一个已转换为 Spark SQL DataFrame 的 RDD。我想用 UDF 对列进行一些转换,最终看起来像这样:

df = df.withColumn("col1", udf1(df.col1))\
       .withColumn("col2", udf2(df.col2))\
       ...
       ...
       .withColumn("newcol", udf(df.oldcol1, df.oldcol2))\
       .drop(df.oldcol1).drop(df.oldcol2)\
       ...

等等。

有没有更简洁的方式来表达这一点(重复的withColumn 和drop 调用)?

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql pyspark-sql


    【解决方案1】:

    您可以在一个表达式中传递多个操作。

    exprs = [udf1(col("col1")).alias("col1"),
             udf2(col("col2")).alias("col2"),
             ...
             udfn(col("coln")).alias("coln")]
    

    然后将它们解压到select:

    df = df.select(*exprs)
    

    因此,采用这种方法,您将在 df 上执行此类 udfs,并且您将重命名结果列。请注意,我的回答几乎与this 完全一样,但是问题与我的完全不同,所以这就是为什么我决定回答它而不是将其标记为重复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 2022-12-18
      相关资源
      最近更新 更多