Python 如何从多个列表创建pyspark数据帧

Python 如何从多个列表创建pyspark数据帧,python,pyspark,apache-spark-sql,Python,Pyspark,Apache Spark Sql,我想将两个列表转换为pyspark数据帧,其中列表是各自的列 我试过了 a=[1, 2, 3, 4] b=[2, 3, 4, 5] sqlContext.createDataFrame([a, b], schema=['a', 'b']).show() 但是我有 +---+---+---+---+ | a| b| _3| _4| +---+---+---+---+

我想将两个列表转换为pyspark数据帧,其中列表是各自的列

我试过了

a=[1, 2, 3, 4]
b=[2, 3, 4, 5]
sqlContext.createDataFrame([a, b], schema=['a', 'b']).show()
但是我有

+---+---+---+---+                                                               
|  a|  b| _3| _4|
+---+---+---+---+
|  1|  2|  3|  4|
|  2|  3|  4|  5|
+---+---+---+---+
我真正想要的是:

+---+---+                                                              
|  a|  b|
+---+---+
|  1|  2|
|  2|  3|
|  3|  4|
|  4|  5|
+---+---+

是否有一种方便的方法来创建此结果?

只需转换列表即可:

sqlContext.createDataFrame(zip(a, b), schema=['a', 'b']).show()

我不直接了解pyspark,但我想用它来代替这个数据结构:

[[1, 2, 3, 4],
 [2, 3, 4, 5]]
你需要给它这个

[[1, 2],
 [2, 3],
 [3, 4],
 [4, 5]]
从数据结构到所需内容的解释性方法是使用numpy转置:

import numpy as np
a=[1, 2, 3, 4]
b=[2, 3, 4, 5]
sqlContext.createDataFrame((np.array([a, b])).T, schema=['a', 'b']).show()
以下是解决问题的步骤 创建sparksession

spark = SparkSession.builder.appName('SparkByExamples.com').getOrCreate()
创建数据和列

columns = ["language","users_count"]
data = [("Java", "20000"), ("Python", "100000"), ("Scala", "3000")]
从RDD创建数据帧

rdd = spark.sparkContext.parallelize(data)
df= spark.createDataFrame(rdd).toDF(*columns)
第二种方法,直接创建数据帧

df2 = spark.createDataFrame(data).toDF(*columns)

看看这个:非常感谢!如果您的数据非常大,您可能会希望这样做。您可能希望更进一步,首先不使用列表,而是从一开始就让您的数据位于numpy阵列中。此外,如果您的数据大小不大,那么为什么要使用spark呢?