在pyspark中解压list类型的列可以使用explode函数。explode函数将包含在list中的元素拆分成多行,每行包含一个元素。
以下是解压list类型列的步骤:
from pyspark.sql.functions import explode
df = df.withColumn('unpacked_col', explode(df.list_col))
这将在DataFrame中添加一个新的列'unpacked_col',其中包含解压后的元素。
df = df.withColumn('unpacked_col', explode(df.list_col)).select('list_col', 'unpacked_col')
这将只保留原始的list列和解压后的列。
以下是一个完整的示例代码:
from pyspark.sql import SparkSession
from pyspark.sql.functions import explode
# 创建SparkSession
spark = SparkSession.builder.getOrCreate()
# 创建示例数据
data = [(1, [1, 2, 3]), (2, [4, 5]), (3, [6])]
# 创建DataFrame
df = spark.createDataFrame(data, ['id', 'list_col'])
# 解压list类型的列
df = df.withColumn('unpacked_col', explode(df.list_col))
# 显示结果
df.show()
这将输出以下结果:
+---+--------+------------+
| id|list_col|unpacked_col|
+---+--------+------------+
| 1|[1, 2, 3]| 1|
| 1|[1, 2, 3]| 2|
| 1|[1, 2, 3]| 3|
| 2| [4, 5]| 4|
| 2| [4, 5]| 5|
| 3| [6]| 6|
+---+--------+------------+
在这个例子中,'list_col'列被解压成了'unpacked_col'列,每个元素都被拆分成了一行。
领取专属 10元无门槛券
手把手带您无忧上云