我正在尝试获取数据框中的所有行,其中列值不在列表中(因此通过排除进行过滤)。
举个例子:
df = sqlContext.createDataFrame([('1','a'),('2','b'),('3','b'),('4','c'),('5','d')]
,schema=('id','bar'))
我得到数据框:
+---+---+
| id|bar|
+---+---+
| 1| a|
| 2| b|
| 3| b|
| 4| c|
| 5| d|
+---+---+
我只想排除 bar 为('a' 或 'b')的行。
使用 SQL 表达式字符串会是:
df.filter('bar not in ("a","b")').show()
有没有一种方法可以不使用 SQL 表达式的字符串,或者一次排除一个项目?
编辑:
我可能有一个列表 ['a','b'],其中包含我想使用的排除值。
最佳答案
看起来 ~ 提供了我需要的功能,但我还没有找到任何合适的文档。
df.filter(~col('bar').isin(['a','b'])).show()
+---+---+
| id|bar|
+---+---+
| 4| c|
| 5| d|
+---+---+
关于python - 通过排除使用 isin 过滤 pyspark 数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41775281/