首页 > 解决方案 > 我们可以从另一个数据框向一个数据框添加新列吗

问题描述

我是 Spark 的新手。df1我使用 pyspark创建了一个数据框,它有 10 列。df1然后我为,创建了一个临时视图tempviewdf1。然后我从临时视图中选择了 5 列并制作了另一个数据框df2。现在我想将第 6 列添加到df2from df1。可能吗?

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

标签: apache-sparkpysparkapache-spark-sqlpyspark-sql

解决方案


@victor 说你的 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


推荐阅读