[英]join two dataframe the pyspark
我想加入兩個dataframe pyspark。
我正在使用join
但這會使實例成倍增加。
dfResult = df1.join(df2, on='Class', how="inner")
我怎么能做到? dataframe 中的數據以相同的方式排序,所以我只需要將一列(data3)從一個 dataframe 傳遞到另一個。
歡迎來到 SO! 已經有幾個類似的問題了。 您似乎有一個數據集,恰好有幾個同名的列。 它發生了。 但是 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"))
允許您使用數據集識別來自哪個列。
+-------+------+------+------+
| name| Place| id_1| id_2|
+-------+------+------+------+
| Rose|Canada|123456|123456|
|Jasmine| US|123456|123456|
| Lily|Purple|789654|333444|
+-------+------+------+------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.