我有一个列表类型:
[[1, 2, 3], ['A', 'B', 'C'], ['aa', 'bb', 'cc']]
每个列表都包含属性“A1”、“A2”和“A3”的值。
我想获取下一个数据框:
+----------+----------+----------+
| A1 | A2 | A3 |
+----------+----------+----------+
| 1 | A | aa |
+----------+----------+----------+
| 2 | B | bb |
+----------+----------+----------+
| 3 | C | cc |
+----------+----------+----------+
我该怎么做?
请您参考如下方法:
您可以创建一个以标题作为字段的行类,并使用 zip 按行遍历列表并为每一行构造一个行对象:
lst = [[1, 2, 3], ['A', 'B', 'C'], ['aa', 'bb', 'cc']]
from pyspark.sql import Row
R = Row("A1", "A2", "A3")
sc.parallelize([R(*r) for r in zip(*lst)]).toDF().show()
+---+---+---+
| A1| A2| A3|
+---+---+---+
| 1| A| aa|
| 2| B| bb|
| 3| C| cc|
+---+---+---+
或者如果你安装了 pandas,先创建一个 pandas 数据框;您可以使用 spark.createDataFrame 直接从 pandas 数据框创建 spark 数据框:
import pandas as pd
headers = ['A1', 'A2', 'A3']
pdf = pd.DataFrame.from_dict(dict(zip(headers, lst)))
spark.createDataFrame(pdf).show()
+---+---+---+
| A1| A2| A3|
+---+---+---+
| 1| A| aa|
| 2| B| bb|
| 3| C| cc|
+---+---+---+
