2016-08-11 45 views
1

我有一個數據框(df1),它有50列,第一個是cust_id,其餘的是功能。我還有另一個數據框(df2),其中只包含cust_id。我想爲df2中的每個客戶添加一條記錄到df1,其中所有的功能都爲0.但是由於兩個數據框有兩個不同的模式,我不能進行聯合。什麼是最好的方式來做到這一點?如何將記錄插入火花的數據框

我使用完整的外連接,但它會生成兩個cust_id列,我需要一個。我應該以某種方式合併這兩個cust_id列,但不知道如何。

+1

呃,你有什麼試過? – gsamaras

+0

沒有出現在我的腦海裏! –

+0

也許完整的外部聯接有幫助? –

回答

2

您可以嘗試做一個完整的外部,以實現類似的東西加入類似如下:

val result = df1.join(df2, Seq("cust_id"), "full_outer") 

但是,功能將是null,而不是0。如果你真的需要他們爲零,其中一種方法是:

val features = df1.columns.toSet - "cust_id" // Remove "cust_id" column 
val newDF = features.foldLeft(df2)(
    (df, colName) => df.withColumn(colName, lit(0)) 
) 
df1.unionAll(newDF) 
相關問題