Apache spark PySpark数据帧的类SQL NOT IN子句
例如,在SQL中,我们可以从col1不在('A','B')的表中选择*代码>Apache spark PySpark数据帧的类SQL NOT IN子句,apache-spark,pyspark,Apache Spark,Pyspark,例如,在SQL中,我们可以从col1不在('A','B')的表中选择* 我想知道是否有一个Pypark等效物。我能够在子句中找到类似SQL的的isin函数,但在中找不到的函数,我只是遇到了同样的问题并找到了解决方案。如果要对任何条件求反(在pySpark中表示为列类),则存在求反运算符~,例如: df.where(~df.flag.isin(1, 2, 3)) # records with flag NOT IN (1, 2, 3) 或者,您可以执行以下操作: df = df.filter(d
我想知道是否有一个Pypark等效物。我能够在子句中找到类似SQL的
的isin
函数,但在
中找不到的函数,我只是遇到了同样的问题并找到了解决方案。如果要对任何条件求反(在pySpark中表示为列
类),则存在求反运算符~
,例如:
df.where(~df.flag.isin(1, 2, 3)) # records with flag NOT IN (1, 2, 3)
或者,您可以执行以下操作:
df = df.filter(df.sbg_digitalId.isin(1, 2, 3) == False)
也可以从F.col()调用isin()方法,如下所示:
import pyspark.sql.functions as F
df.filter(~F.col("col1").isin('A','B'))
允许访问IDE中的“isin”文档(当然,如果您正在使用的话)。这有帮助吗<代码>foo NOT IN('a','b')==NOT(foo IN('a','b'))
为什么您更喜欢这种方法而不是公认答案中提出的方法?在某些特定的情况下,这可能会更好吗?我可能会在答案中添加它,但是的,我更喜欢列对象的这种方法,因为可以通过调用df字段(即df.flag)以不同的方式访问库方法和文档,例如,它不提供对isin文档的访问