pySpark中的多个OR和AND条件

3lxsmp7m  于 2023-04-29  发布在  Spark
关注(0)|答案(1)|浏览(170)

我正试图通过遵循逻辑来达到结果

IF Text.Contains([Col1] = "Text1" OR [Col1] = "Text2"))
AND 
Text.Contains([Col3] = "Text3")) AND
(IF not (Text.Contains([Col2] ="12345") OR
not Text.Contains([Col2] = "67890"))

我在pySpark中编写了以下代码,但没有得到预期的结果

(
    (F.col("Col1").like("%Text1%") | F.col("Col1").like("%Text2"))
    &
    (
        (F.col("Col3").like("%Text3%")) &
        (~F.col("Col2").like("%12345%") | (~F.col("Col2").like("%67890%")))
    )
)

有人能帮我纠正代码以获得所需的结果吗?
我的输入数据集是:
| Col1|Col3|Col2|
| --------------|--------------|--------------|
| 文本1;随机|Text 3;随机|12345;67890;34567|
| 随机;文本2|文本3|98765;54321|
因此,预期的输出是一个布尔结果,其中第一行预期为False,而第二行预期为True。

igsr9ssn

igsr9ssn1#

据我所知,这就是你想达到的目的:

(
    F.col("Col1").like("%Text1%") | F.col("Col1").like("%Text2")
)
&
F.col("Col3").like("%Text3%")
&
(
    (~F.col("Col2").like("%12345%")) | (~F.col("Col2").like("%67890%"))
)

相关问题