【问题标题】:How to create a pyspark dataframe from multiple lists如何从多个列表创建 pyspark 数据框
【发布时间】:2018-10-12 17:12:33
【问题描述】:

我想将两个列表转换为 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|
+---+---+

有没有方便的方法来创建这个结果?

【问题讨论】:

标签: python pyspark apache-spark-sql


【解决方案1】:

只需转置列表:

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

【讨论】:

  • 非常感谢!
【解决方案2】:

我不直接了解 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()

【讨论】:

  • 如果您的数据规模很大,您可能希望这样做。您可能希望更进一步,一开始就不使用列表,而是从一开始就将数据保存在 numpy 数组中。
  • 补充一点,如果您的数据不是很大,那么为什么要使用 spark 呢?
【解决方案3】:

以下是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)

第二种方式,直接创建dataframe

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

【讨论】:

    猜你喜欢
    • 2018-01-07
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 2022-01-03
    • 1970-01-01
    相关资源
    最近更新 更多