【发布时间】:2020-07-31 05:59:15
【问题描述】:
我正在尝试根据 2 个条件在我的数据集中创建一个标志,第一个很简单。 CheckingCol = CheckingCol2.
第二个更复杂。我有一个名为 TranID 的列和一个名为 RevID 的列。
如果 RevID 在 TranID AND CheckingCol = CheckingCol2 中,则该标志应返回“是”。否则,标志应返回“否”。
我的数据如下所示:
TranID RevID CheckingCol CheckingCol2
1 2 ABC ABC
2 1 ABC ABC
3 6 ABCDE ABCDE
4 3 ABCDE ABC
5 7 ABCDE ABC
预期的结果是:
TranID RevID CheckingCol CheckingCol2 Flag
1 2 ABC ABC Yes
2 1 ABC ABC Yes
3 6 ABCDE ABCDE No
4 3 ABCDE ABC No
5 7 ABCDE ABC No
我尝试过使用:
df.withColumn("TotalMatch", when((col("RevID").contains(col("TranID"))) & (col("CheckingColumn") == col("CheckingColumn2")), "Yes").otherwise("No"))
但它不起作用,我无法在网上找到有关如何执行此操作的任何信息。
任何帮助都会很棒!
【问题讨论】:
-
F.lit("Yes")而不是"Yes"和F.lit("No")而不是"No" -
@pault contains 确实有效,但我意识到问题是 OP 在
TranID和RevID之间存在父子类型的问题,这就是为什么前两行被标记为@987654330 @ -
@pault 因此,以我的拙见,我认为它不是
duplicate