📜  如何从多个列表创建 PySpark 数据框?(1)

📅  最后修改于: 2023-12-03 15:37:55.929000             🧑  作者: Mango

如何从多个列表创建 PySpark 数据框?

在 PySpark 中,创建数据框是常见的任务之一。有时我们需要从多个列表中创建数据框。下面介绍两种方法。

方法 1:使用 zip 方法

可以使用 zip 方法将多个列表组合到一起,然后使用 PySpark 的 createDataFrame 方法创建数据框。

from pyspark.sql import SparkSession

# 创建 SparkSession 对象
spark = SparkSession.builder.appName("CreateDataFrameDemo").getOrCreate()

# 定义数据
names = ['John', 'Mike', 'Sara', 'Emily']
ages = [30, 25, 28, 32]
salaries = [50000, 40000, 45000, 55000]

# 使用 zip 将数据组合到一起
data = list(zip(names, ages, salaries))

# 创建数据框
df = spark.createDataFrame(data, ['name', 'age', 'salary'])

# 显示数据框
df.show()

输出结果为:

+-----+---+------+
| name|age|salary|
+-----+---+------+
| John| 30| 50000|
| Mike| 25| 40000|
| Sara| 28| 45000|
|Emily| 32| 55000|
+-----+---+------+
方法 2:使用 Row 对象

还可以使用 Row 对象将多个列表组合到一起,然后使用 PySpark 的 createDataFrame 方法创建数据框。

from pyspark.sql import SparkSession, Row

# 创建 SparkSession 对象
spark = SparkSession.builder.appName("CreateDataFrameDemo").getOrCreate()

# 定义数据
names = ['John', 'Mike', 'Sara', 'Emily']
ages = [30, 25, 28, 32]
salaries = [50000, 40000, 45000, 55000]

# 使用 Row 对象将数据组合到一起
data = [Row(name=n, age=a, salary=s) for n, a, s in zip(names, ages, salaries)]

# 创建数据框
df = spark.createDataFrame(data)

# 显示数据框
df.show()

输出结果为:

+---+------+-----+
|age|salary| name|
+---+------+-----+
| 30| 50000| John|
| 25| 40000| Mike|
| 28| 45000| Sara|
| 32| 55000|Emily|
+---+------+-----+