📜  如何使用 explode pyspark 创建一个新列 - Python (1)

📅  最后修改于: 2023-12-03 14:51:52.344000             🧑  作者: Mango

如何使用 explode pyspark 创建一个新列 - Python

在Pyspark中,我们可以使用explode函数来分裂一个包含数组或者列表的列。这将导致数组或者列表中的每一个元素都分配到一个新行中。在这篇文章中,我们将向您展示如何使用explode函数创建一个新列。

导入必要的库

我们将会使用Pyspark中的SparkSession类来创建一个SparkSession实例来执行我们需要的操作。以下是我们需要导入的库:

from pyspark.sql.functions import explode
from pyspark.sql import SparkSession
初始化SparkSession

我们使用SparkSession.builder启动SparkSession并设置应用程序名字,以便在SparkUI中看到。以下是这个过程:

spark = SparkSession.builder.appName('Create new column with explode').getOrCreate()
创建数据集

为了演示如何使用explode创建一个新列,我们将创建一个简单的数据集。以下是代码:

data = [("Alice", [1, 2, 3]), ("Bob", [4, 5, 6]), ("Charlie", [7, 8, 9]), ("Dave", [10, 11, 12])]
df = spark.createDataFrame(data, ["name", "values"])

# 查看数据集
df.show()

输出结果应该是这样的:

+-------+---------+
|   name|   values|
+-------+---------+
|  Alice|[1, 2, 3]|
|    Bob|[4, 5, 6]|
|Charlie|[7, 8, 9]|
|   Dave|[10, 11, 12]|
+-------+---------+
使用explode创建新列

现在我们使用explode函数创建一个新列。我们将在原始数据集中创建一个新列,该新列将包含来自“values”列的单个值。以下是使用explode函数创建一个新列的代码:

new_df = df.select("name", explode("values").alias("value"))

# 查看新数据集
new_df.show()

输出结果应该是这样的:

+------+-----+
|  name|value|
+------+-----+
| Alice|    1|
| Alice|    2|
| Alice|    3|
|   Bob|    4|
|   Bob|    5|
|   Bob|    6|
|Charlie|    7|
|Charlie|    8|
|Charlie|    9|
|  Dave|   10|
|  Dave|   11|
|  Dave|   12|
+------+-----+

我们可以看到,新的数据集“new_df”包含原始数据集中的所有列,“values”列已经被分裂,每个数组中的值都分配给新的行,并命名为“value”列。

结论

使用explode函数,我们可以轻松地创建一个新列,该列包含来自数组或者列表中的单个值。这对于数据探索和数据分析非常有用。如果你正在使用Pyspark,我希望这篇文章能够对你有所帮助。