SQL就像Pyspark数据帧的NOT IN子句

时间:2016-09-21 18:44:17

标签: pyspark

在SQL中,我们可以做select * from table where col1 not in ('A','B');

我想知道是否有相当的pyspark。我能够为isin子句查找SQL的IN函数,但NOT IN没有。

3 个答案:

答案 0 :(得分:8)

我遇到了同样的问题并找到了解决方案。如果你想否定任何条件(在pySpark中表示为Column类),则有否定运算符~,例如:

df.where(~df.flag.isin(1, 2, 3)) # records with flag NOT IN (1, 2, 3)

答案 1 :(得分:0)

或者,您可以执行以下操作:

df = df.filter(df.sbg_digitalId.isin(1, 2, 3) == False)

答案 2 :(得分:0)

也可以像这样从 F.col() 调用 isin() 方法:

import pyspark.sql.functions as F

df.filter(~F.col("col1").isin('A','B'))

允许访问 IDE 中的“isin”文档(当然,如果您使用的是 PySpark-Stubs)。