我正在尝试使用dfB过滤掉dfA中的行。
DFA:
+----+---+----+------------+-----+
|year|cid|X| Y|Z|
+----+---+----+------------+-----+
+----+---+----+------------+-----+.
DFB:
+----+---+
|year|cid|
+----+---+
+----+---+
我的目标是用dfA填充dfB中的所有情侣year cid
。
我认为这是一个明显的例外情况:
dfA.except(dfB)
但是我需要DF中的列数相同。 有没有办法执行除特定列上的操作? 或者应该完全走另一条道路。
答案 0 :(得分:4)
不,我不认为这适用于except
。你需要的是一个左反连接:
dfA.join(dfB,Seq("year","cid"),"leftanti")
在火花2之前,这应该做同样的
dfA.join(dfB.withColumn("b",lit(1)),Seq("year","cid"),"left")
.where($"b".isNull).drop($"b")