gpt4 book ai didi

使用两列(不区分大小写)在数据帧上使用 Scala LEFT JOIN

转载 作者:行者123 更新时间:2023-12-01 08:06:17 25 4
gpt4 key购买 nike

我创建了以下方法,它采用两个数据帧; lhs & rhs 及其各自的第一列和第二列作为输入。该方法应使用为每个数据帧提供的两列返回这两个帧之间的左连接结果(忽略它们的大小写敏感性)。

我面临的问题是它正在做更多的内部连接。它返回的行数是 lhs 数据框中行数的 3 倍(由于 rhs 中的重复值),但由于它是左连接,所以 rhs 数据框中的重复和行数应该无关紧要。

  def leftJoinCaseInsensitive(lhs: DataFrame, rhs: DataFrame, leftTableColumn: String, rightTableColumn: String, leftTableColumn1: String, rightTableColumn1: String): DataFrame = {
val joined: DataFrame = lhs.join(rhs, upper(lhs.col(leftTableColumn)) === upper(rhs.col(rightTableColumn)) && upper(lhs.col(leftTableColumn1)) === upper(rhs.col(rightTableColumn1)), "left");
return joined
}

最佳答案

如果rhs中有重复的值,那么lhs被复制是正常的。如果 lhs row 中连接列的连接值与多个 rhs 行 匹配,则连接的 dataframe 应该有多个 rows来自 lhs 匹配来自 rhsrows

例如

lhs dataframe
+--------+--------+--------+
|col1left|col2left|col3left|
+--------+--------+--------+
|a |1 |leftside|
+--------+--------+--------+

rhs dataframe
+---------+---------+---------+
|col1right|col2right|col3right|
+---------+---------+---------+
|a |1 |rightside|
|a |1 |rightside|
+---------+---------+---------+

那么正常有left join as

left joined lhs with rhs
+--------+--------+--------+---------+---------+---------+
|col1left|col2left|col3left|col1right|col2right|col3right|
+--------+--------+--------+---------+---------+---------+
|a |1 |leftside|a |1 |rightside|
|a |1 |leftside|a |1 |rightside|
+--------+--------+--------+---------+---------+---------+

您可以了解更多信息here

关于使用两列(不区分大小写)在数据帧上使用 Scala LEFT JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47055535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com