我有以下情况:
我有2个只包含1列的数据帧 让我们说
DF1=(1,2,3,4,5)
DF2=(3,6,7,8,9,10)
基本上这些值是键,如果DF1中的键不在DF2中,我正在创建DF1的镶木地板文件(在当前示例中,它应该返回false)。我目前实现我的要求的方法是:
val df1count= DF1.count
val df2count=DF2.count
val diffDF=DF2.except(DF1)
val diffCount=diffDF.count
if(diffCount==(df2count-df1count)) true
else false
这种方法的问题是我将动作元素调用了4次,这肯定不是最好的方法。有人可以建议我实现这个目标的最有效方法吗?
答案 0 :(得分:8)
您可以使用intersect
获取两个DataFrames共有的值,然后检查它是否为空:
DF1.intersect(DF2).take(1).isEmpty
这只会使用一个动作(take(1)
)和相当快的动作。
答案 1 :(得分:0)
以下是检查数据集首先是否等于数据集秒:
if(first.except(second).union(second.except(first)).count() == 0)
first == second
else
first != second
答案 2 :(得分:0)
尝试将交集与计数相结合,这将确保内容相同并且两个值的数量相同并且断言为真
val intersectcount = DF1.intersect(DF2).count()
val检查=(intersectcount == DF1.count())&&(intersectcount == DF2.count())