我们可以从另一个数据框向数据框添加新列吗

时间:2018-08-24 05:58:01

标签: apache-spark pyspark apache-spark-sql pyspark-sql

我是Spark的新手。我使用pyspark创建了一个数据框df1,其中有10列。然后,我为df1tempviewdf1创建了一个临时视图。然后,我从临时视图中选择了5列,并创建了另一个数据框df2。现在,我想从df2df1的第六列。可能吗?

我看到了withColumn()方法,但是我意识到只有在列名相同的情况下它才有效。

1 个答案:

答案 0 :(得分:0)

@胜利者 假设您的Df1如下所示,

+---+----+----+----+----+----+----+
|key|col1|col2|col3|col4|col5|col6|
+---+----+----+----+----+----+----+
|  1|   1|   2|   3|   4|   7|   8|
|  2|   4|   3|   4|   5|   8|   9|
|  3|   9|   4|   5|   6|   9|  10|

并创建一个视图

  Df1.createOrReplaceTempView("tempviewdf1")

并从中选择几列,并将其设为Df2

val Df2 = spark.sql("""select key, col1, col2, col3 , col4 from tempviewdf1""")

现在说您要添加Df2的col5部分,只需将其添加到select ..

val Df2 = spark.sql("""select key, col1, col2, col3 , col4, col5 from tempviewdf1""")

但是为什么要创建视图并从中选择一列并创建Df2?

您可以像下面这样进行设置(这是spark-scala,类似地您可以在pyspark中看到)

val Df2 = Df1.select("key","col1","col2","col3","col4","col5")

您甚至可以采取其他方式,例如删除列。

https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#module-pyspark.sql.functions