2024-09-29 01:28:24 发布
网友
我想在pyspark中加入两个数据帧
我正在使用join,但这会增加实例数
join
dfResult = df1.join(df2, on='Class', how="inner")
我怎么做呢? 数据在两个数据帧中的排序方式相同,因此我只需要从一个数据帧向另一个数据帧传递一列(data3)
欢迎来到SO!有几个similar questions already。似乎有一个数据集碰巧有几个同名的列。这是常有的事。但是spark希望它们都是不同的,除了您加入的列之外。您可以通过简单地重命名列来解决此问题
df1 = spark.createDataFrame(spark.sparkContext.parallelize([("123456","Rose","Yellow"),("123456","Jasmine","white"),("789654","Lily","Purple")])).toDF(*["id","name","color"]) df2 = spark.createDataFrame(spark.sparkContext.parallelize([("123456","Rose","Canada"),("123456","Jasmine","US"),("333444","Lily","Purple")])).toDF(*["id","name","Place"]) df3 = df1.join(df2, on=["name"], how="inner") df3.show()
未重命名的联接将导致
+ -+ + + + + | name| id| color| id| Place| + -+ + + + + | Rose|123456|Yellow|123456|Canada| |Jasmine|123456| white|123456| US| | Lily|789654|Purple|333444|Purple| + -+ + + + +
使用重命名进行连接
df3 = df1.join(df2, on=["name"], how="inner").select("name", "Place",df1.id.alias("id_1"), df2.id.alias("id_2"))
允许您使用dataset标识源于哪个列
+ -+ + + + | name| Place| id_1| id_2| + -+ + + + | Rose|Canada|123456|123456| |Jasmine| US|123456|123456| | Lily|Purple|789654|333444| + -+ + + +
欢迎来到SO!有几个similar questions already。似乎有一个数据集碰巧有几个同名的列。这是常有的事。但是spark希望它们都是不同的,除了您加入的列之外。您可以通过简单地重命名列来解决此问题
未重命名的联接将导致
使用重命名进行连接
允许您使用dataset标识源于哪个列
相关问题 更多 >
编程相关推荐