我想将两个列表转换为一个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|
+---+---+
是否有方便的方法来创建此结果?
答案 0 :(得分:5)
只需转置列表:
sqlContext.createDataFrame(zip(a, b), schema=['a', 'b']).show()
答案 1 :(得分:3)
我不直接了解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()
答案 2 :(得分:0)
以下是create pyspark dataframe的步骤 创建sparksession
spark = SparkSession.builder.appName('SparkByExamples.com').getOrCreate()
创建数据和列
columns = ["language","users_count"]
data = [("Java", "20000"), ("Python", "100000"), ("Scala", "3000")]
从RDD创建DataFrame
rdd = spark.sparkContext.parallelize(data)
df= spark.createDataFrame(rdd).toDF(*columns)
第二种方法,直接创建数据框
df2 = spark.createDataFrame(data).toDF(*columns)