首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >筛选一个数据帧的值(如果存在于另一个数据帧中而不存在

筛选一个数据帧的值(如果存在于另一个数据帧中而不存在
EN

Stack Overflow用户
提问于 2019-03-31 02:39:15
回答 1查看 70关注 0票数 0

我有两个数据集details和reference details。详细信息

代码日期位置温度

代码语言:javascript
运行
复制
1      1-1-19    blr      30


2      1-2-18    up       33


3      1-2-18    dlh      25

refrenceDetails

代码日期位置

1 1-1-19亿

2 1-2-18向上

如果代码存在于referenceDetails数据集中,我希望将详细信息数据集中的记录作为有效详细信息进行筛选,否则立即将其作为无效详细信息进行筛选

我试着做内部连接和left_anti连接。但我必须加入两次。有没有办法避免两次连接

代码语言:javascript
运行
复制
  val invalidRecords = detailsDS.join(referencedetailsDS,Seq(Code),"left_anti")


val invalidRecords = detailsDS.join(referencedetailsDS,Seq(Code),"inner")

 Valid Details


#code    date   location temperature


    1     1-1-19    blr      30


    2     1-2-18  up       33

 Invalid Details

code    date   location temperature

    3     1-2-18  dlh      25
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-31 06:22:57

使用左连接:

代码语言:javascript
运行
复制
// data
val details = Seq(
  (1, "1-1-19", "blr", 30),
  (2, "1-2-18", "up", 33),
  (3, "1-2-18", "dlh", 25)
).toDF("code", "date", "location", "temperature")

val refrenceDetails = Seq(
  (1, "1-1-19", "blr"),
  (2, "1-2-18", "up")).
  toDF("code", "date", "location")

// action
val joined = details.alias("d").join(refrenceDetails.alias("r"), Seq("code"), "left")
val validDetails = joined.where($"r.code".isNotNull)
val invalidDetails = joined.where($"r.code".isNull)

// display
validDetails.show(false)
invalidDetails.show(false)

输出:

代码语言:javascript
运行
复制
+----+------+--------+-----------+------+--------+
|code|date  |location|temperature|date  |location|
+----+------+--------+-----------+------+--------+
|1   |1-1-19|blr     |30         |1-1-19|blr     |
|2   |1-2-18|up      |33         |1-2-18|up      |
+----+------+--------+-----------+------+--------+

+----+------+--------+-----------+----+--------+
|code|date  |location|temperature|date|location|
+----+------+--------+-----------+----+--------+
|3   |1-2-18|dlh     |25         |null|null    |
+----+------+--------+-----------+----+--------+
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55434579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档