📅  最后修改于: 2023-12-03 14:51:52.344000             🧑  作者: Mango
在Pyspark中,我们可以使用explode函数来分裂一个包含数组或者列表的列。这将导致数组或者列表中的每一个元素都分配到一个新行中。在这篇文章中,我们将向您展示如何使用explode函数创建一个新列。
我们将会使用Pyspark中的SparkSession类来创建一个SparkSession实例来执行我们需要的操作。以下是我们需要导入的库:
from pyspark.sql.functions import explode
from pyspark.sql import 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函数创建一个新列。我们将在原始数据集中创建一个新列,该新列将包含来自“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,我希望这篇文章能够对你有所帮助。