我是Spark的新手。我使用pyspark创建了一个数据框df1
,其中有10列。然后,我为df1
和tempviewdf1
创建了一个临时视图。然后,我从临时视图中选择了5列,并创建了另一个数据框df2
。现在,我想从df2
到df1
的第六列。可能吗?
我看到了withColumn()
方法,但是我意识到只有在列名相同的情况下它才有效。
答案 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