Dataframe 如何从字典中创建数据框,其中每个项都是PySpark中的一列

Dataframe 如何从字典中创建数据框,其中每个项都是PySpark中的一列,dataframe,pyspark,spark-dataframe,Dataframe,Pyspark,Spark Dataframe,我想从字典中创建一个新的数据帧。字典包含列名作为键,列数据列表作为值。例如: col_dict = {'col1': [1, 2, 3], 'col2': [4, 5, 6]} 我需要它作为一个数据帧,如下所示: +------+------+ | col1 | col2 | +------+------+ | 1| 4| | 2| 5| | 3| 6| +------+------+ 似乎没有简单的方法可以做到这一点。

我想从字典中创建一个新的数据帧。字典包含列名作为键,列数据列表作为值。例如:

col_dict = {'col1': [1, 2, 3],
            'col2': [4, 5, 6]}
我需要它作为一个数据帧,如下所示:

+------+------+
| col1 | col2 |
+------+------+
|     1|     4|
|     2|     5|
|     3|     6|
+------+------+

似乎没有简单的方法可以做到这一点。

最简单的方法是创建pandas数据帧并转换为Spark数据帧:

和熊猫在一起
col_dict={'col1':[1,2,3],
'col2':[4,5,6]}
作为pd进口熊猫
熊猫数据帧(col_dict)
df=sqlCtx.createDataFrame(熊猫_-df)
df.show()
#+----+----+
#|col1 | col2|
#+----+----+
#|   1|   4|
#|   2|   5|
#|   3|   6|
#+----+----+
没有熊猫 如果pandas不可用,您只需将数据处理成可用于
createDataFrame()
函数的表单即可。引用我自己的话:

我发现将createDataFrame()的参数视为 元组列表,其中列表中的每个条目对应于 数据帧和元组的每个元素对应一列

colnames,data=zip(*col_dict.items())
打印(colnames)
#(‘col2’、‘col1’)
打印(数据)
#([4, 5, 6], [1, 2, 3])
现在我们需要修改数据,使其成为元组列表,其中每个元素包含对应列的数据。幸运的是,这很容易使用
zip

data=zip(*data)
打印(数据)
#[(4, 1), (5, 2), (6, 3)]
现在调用
createDataFrame()

df=sqlCtx.createDataFrame(数据,colnames)
df.show()
#+----+----+
#|col2 | col1|
#+----+----+
#|   4|   1|
#|   5|   2|
#|   6|   3|
#+----+----+

不幸的是,我没有可用的熊猫:/。我会等一会儿再接受。这是我正在探索的路线,但我担心这会在非常大的数据集上执行