gpt4 book ai didi

python - 如何在 PySpark 中将字典转换为数据框?

转载 作者:行者123 更新时间:2023-12-04 01:29:16 24 4
gpt4 key购买 nike

我正在尝试转换字典:data_dict = {'t1': '1', 't2': '2', 't3': '3'}进入数据帧:

key   |   value|
----------------
t1 1
t2 2
t3 3

为此,我尝试了:
schema = StructType([StructField("key", StringType(), True), StructField("value", StringType(), True)])
ddf = spark.createDataFrame(data_dict, schema)

但我收到以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/pyspark/sql/session.py", line 748, in createDataFrame
rdd, schema = self._createFromLocal(map(prepare, data), schema)
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/pyspark/sql/session.py", line 413, in _createFromLocal
data = list(data)
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/pyspark/sql/session.py", line 730, in prepare
verify_func(obj)
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/pyspark/sql/types.py", line 1389, in verify
verify_value(obj)
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/pyspark/sql/types.py", line 1377, in verify_struct
% (obj, type(obj))))
TypeError: StructType can not accept object 't1' in type <class 'str'>

所以我在没有指定任何架构的情况下尝试了这个,而只是指定了列数据类型: ddf = spark.createDataFrame(data_dict, StringType() & ddf = spark.createDataFrame(data_dict, StringType(), StringType())
但两者都会产生一个数据框,其中一列是字典的键,如下所示:
+-----+
|value|
+-----+
|t1 |
|t2 |
|t3 |
+-----+

谁能让我知道如何在 PySpark 中将字典转换为 spark 数据框?

最佳答案

您可以使用 data_dict.items()列出键/值对:

spark.createDataFrame(data_dict.items()).show()

哪个打印
+---+---+
| _1| _2|
+---+---+
| t1| 1|
| t2| 2|
| t3| 3|
+---+---+

当然,您可以指定您的架构:
spark.createDataFrame(data_dict.items(), 
schema=StructType(fields=[
StructField("key", StringType()),
StructField("value", StringType())])).show()

导致
+---+-----+
|key|value|
+---+-----+
| t1| 1|
| t2| 2|
| t3| 3|
+---+-----+

关于python - 如何在 PySpark 中将字典转换为数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61339594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com