[英]Join three dataframes with pyspark
我有三個數據框:
df1: df2: df3:
+--- +--------+ +--------+-------+ +----+----------+
| id1|category| |category| values| | id2| values|
+----+--------+ +--------+-------+ +----+----------+
| 0| C| | A| v1| | 0| v2, v3|
| 1| B| | A| v2| | 1| v1|
| 2| C| | A| v3| | 2| v1, v3|
| 3| A| | B| v4| | 3|v1, V2, v3|
| 4| A| | B| v5| | 4| v3|
| 5| B| | B| v6| | 5| v1, v2|
| 6| C| | B| v7| | 6| v3|
| 7| A| | C| v8| +----+----------+
| 8| B| | C| v9|
| 9| B| | C| v10|
+----+--------+ | C| v11|
+--------+-------+
通過指令在 df1 和 df3 之間進行交叉連接后:
df=df1.crossJoin(df3.select("id2")).select("id1", "id2")
我想添加一個新列( newCloumn ),必須像這樣填寫:如果類別列包含值列中的至少一個值,則為1 ,否則為0
如果您還重命名兩個數據框中的列“類別”(例如:類別 1 和類別 2),這將更實用。 試試這個,我想這就是你要找的
df=df.select(col("id1").alias("id"), "id2")
df4=df.join(df1, df.id==df1.id1).drop("id").join(df2, df4.category1==df2.category2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.