通过列连接两个DataFrame [PySpark]

3
我有两列数据,即(每列的条目数量相同)。
df1 =
+-------+
| col1  |
+-------+
|   10  |
+-------+
|   3   |
+-------+
...
df2 = 
+-------+
| col2  |
+-------+
|   6   |
+-------+
|   1   |
+-------+
...

我希望将它们合并,使得最终的数据框形状如下:
df3 =
+-------+-------+
| col1  | col2  |
+-------+-------+
| 10    | 6     |
+-------+-------+
| 3     | 1     |
+-------+-------+
...

但是,我不能使用join方法来合并基于列标题的列。如果有人有关于如何轻松实现这一点的提示,那将会非常有帮助!

请查看此链接:https://forums.databricks.com/questions/8180/how-to-merge-two-data-frames-column-wise-in-apache.html。 - Suresh
你可能会对这个感兴趣 - https://stackoverflow.com/questions/45883151/how-to-retrieve-a-column-from-pyspark-dataframe-and-and-insert-it-as-new-column/45884807#45884807 - Prem
2个回答

0

如果您能够将列作为列表获取,则一种方法是使用Python的zip方法。例如:

list1 = [1,2,3]
list2 = ['foo','baz','bar']
data_tuples = list(zip(list1,list2))
df = spark.createDataFrame(data_tuples)
df.show()

+---+---+
| _1| _2|
+---+---+
|  1|foo|
|  2|baz|
|  3|bar|
+---+---+

然而我不确定它在处理大数据集时的表现如何。


-1

试试这个

df1 = df1.withColumn("code", monotonically_increasing_id())

df2 = df2.withColumn("code", monotonically_increasing_id())

这样你就给它们都加上了一个名为code的列,可以用来经典地合并两个数据框。

df3 = df2.join(df1, ["code"])


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接