2016-05-12 19 views
0

我有兩列數據框,列表爲列。除了數據框中列表的順序不同這一事實外,兩個數據幀都是相同的。
例如。模式:(ID文本,名稱列表 '<' 文本>)
DF1:(5,WrappedArray(ABC,PQR,XYZ))
DF2:(5,WrappedArray(ABC,XYZ,PQR))
當我使用相交,我沒有得到這個記錄的結果。我怎樣才能得到這些記錄的交集?具有列表列的相交數據幀

+0

作爲一種替代方法,有沒有一種方法來排序數據框中的列表? –

回答

0

我認爲你是對的,最簡單的方法是排序列表列。

val sortListFunc = udf((inputList: WrappedArray[String]) => { 
    inputList.sorted 
}) 

val df1Sorted = df1 
    .withColumn("name_sorted",sortListFunc(col("name")) 
    .select($"id","name_sorted".as("name")) 

val df2Sorted = df2 
    .withColumn("name_sorted",sortListFunc(col("name")) 
    .select($"id","name_sorted".as("name")) 

然後你應該可以加入或相交。

相關問題