我有这个数据框:
+---------+
| 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|
+-----------+-----------+----------+
我正在摸索如何做到这一点,实现这一目标的正确方法是什么?
未经测试的代码,但想法是仅使用
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')