我有兩個相同的 Spark DataFrame。它們具有相同的列。我正在嘗試在一行中創建一個 IF-Else 陳述句,但找不到更好的方法。
if (df1.col1 = df2.col2 and df1.col2 < df2.col2){
val final_df = df1.union(df2)
}
else{
println("No Match")
}
我想做的是來自兩個資料框。如果 df1 和 df2 中 col1 中的任何 1 行匹配,并且 df1 和 df2 中的匹配行也匹配,則 df2 中 col2 中的行必須大于 df1 中的行。然后我將合并兩個資料框。否則,列印訊息不匹配。
更好的方式來說明它下面
df1.show()
---- ----------
|name|version_nb|
---- ----------
|tony|56 |
|sam |96 |
|john|9 |
df2.show()
---- ----------
|name|version_nb|
---- ----------
|tony|78 |
|mary|12 |
|Rob |2 |
在上面的這種情況下,if-else 陳述句將觸發并聯合兩個 DF,因為在兩個 DF 的 name 列中有一個匹配項,而且 df2 中的 version_nb 大于 df1。但是,如果我們只有名稱匹配但 df2 中的 version_nb 小于或等于 df1。然后它會列印出訊息No match。
如果你們都可以就如何創建 if-else 陳述句給我一些想法或建議,那就太好了。那挺棒的。
uj5u.com熱心網友回復:
您可以在名稱上加入資料框,過濾 df2 中的版本大于 df1 中的版本的行,然后檢查是否存在任何行。對于您的示例:
val df3 = df1.join(df2, "name").filter(df2.col("version_nb") > df1.col("version_nb"))
if (!df3.isEmpty)
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/476695.html
下一篇:如何防止xcode編輯代碼
