在pyspark中创建列数组

2024-09-29 22:37:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个具有单行和多列的数据帧。我想把它转换成多行。 我在stackoverflow上发现了一个类似的问题

这个问题回答了如何在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: _*))

Tags: 数据代码orgimportsqlvarapachecolumn
1条回答
网友
1楼 · 发布于 2024-09-29 22:37:36

在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))

相关问题 更多 >

    热门问题