Spark:来自数组列的新数据框列

问题描述 投票:0回答:1

我有这个数据框:

+---------+
|     data|
+---------+
|[a, b, c]|
|[d, e, f]|
|[g, h, i]|
+---------+

以及列名称列表[“第一列”,“第二列”,“第三列”]

我想创建新列来生成以下数据框:

+-----------+-----------+----------+
|  first col| second col| third col|
+-----------+-----------+----------+
|          a|          b|         c|
|          d|          e|         f|
|          g|          h|         i|
+-----------+-----------+----------+

我正在摸索如何做到这一点,实现这一目标的正确方法是什么?

apache-spark
1个回答
0
投票

未经测试的代码,但想法是仅使用

getItem()
访问
data
列的第 i 个元素(在您的情况下是一个列表),并将它们存储在使用
withColumn

创建的新列中

df = spark.createDataFrame([(['a', 'b', 'c'],), (['d', 'e', 'f'],), (['g', 'h', 'i'],)], ['data'])
col_names = ['first col', 'second col', 'third col']

for i, name in enumerate(col_names):
    df = df.withColumn(name, col('data').getItem(i))

df = df.drop('data')

© www.soinside.com 2019 - 2024. All rights reserved.