在PySpark中,可以使用join
操作将两个没有公共列的DataFrame连接起来,并将一个DataFrame的列附加到另一个DataFrame作为新的列。具体步骤如下:
from pyspark.sql import SparkSession
from pyspark.sql.functions import lit
spark = SparkSession.builder.getOrCreate()
df1 = spark.createDataFrame([(1, 'A'), (2, 'B'), (3, 'C')], ['id1', 'col1'])
df2 = spark.createDataFrame([(4, 'X'), (5, 'Y'), (6, 'Z')], ['id2', 'col2'])
df1_with_col2 = df1.withColumn('col2', lit(None))
df1_with_col2.show()
输出:
+---+----+----+
|id1|col1|col2|
+---+----+----+
| 1| A|null|
| 2| B|null|
| 3| C|null|
+---+----+----+
crossJoin
操作连接两个DataFrame,并选取需要的列:result = df1_with_col2.crossJoin(df2).select('id1', 'col1', 'col2', 'id2', 'col2')
result.show()
输出:
+---+----+----+---+----+
|id1|col1|col2|id2|col2|
+---+----+----+---+----+
| 1| A|null| 4| X|
| 1| A|null| 5| Y|
| 1| A|null| 6| Z|
| 2| B|null| 4| X|
| 2| B|null| 5| Y|
| 2| B|null| 6| Z|
| 3| C|null| 4| X|
| 3| C|null| 5| Y|
| 3| C|null| 6| Z|
+---+----+----+---+----+
这样,我们成功将df2的列附加到了df1作为新的列。在这个例子中,我们使用了lit(None)
函数为df1创建了一个空的列,然后使用crossJoin
操作连接两个DataFrame,并选取需要的列。最后,我们得到了一个包含附加列的新DataFrame。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云