【问题标题】:create array of columns in pyspark在 pyspark 中创建列数组
【发布时间】:2021-03-11 09:46:58
【问题描述】:

我有一个单行多列的数据框。我希望它将其转换为多行。 我在stackoverflow上发现了一个类似的问题here

问题回答了如何在 scala 中完成,但我想在 pyspark 中执行此操作。我试图在 pyspark 中复制代码,但我无法做到。

我无法将 scala 中的以下代码转换为 python:

import org.apache.spark.sql.Column
var ColumnsAndValues: Array[Column] = df.columns.flatMap { c => {Array(lit(c), col(c))}}
val df2 = df1.withColumn("myMap", map(ColumnsAndValues: _*))

【问题讨论】:

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


    【解决方案1】:

    在 Pyspark 中,您可以使用 create_map 函数创建地图列。并使用 itertools.chain 进行列表理解,以获得相当于 scala flatMap :

    import itertools
    from pyspark.sql import functions as F
    
    columns_and_values = itertools.chain(*[(F.lit(c), F.col(c)) for c in df1.columns])
    df2 = df1.withColumn("myMap", F.create_map(*columns_and_values))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多