我试图获取一个包含两个标志都设置为“1”的数据框中的所有行,以及那些只有其中一个标志设置为“1”,而另一个标志不等于“1”的行。
产生:
使用以下模式(三列),
df = sqlContext.createDataFrame([('a',1,'null'),('b',1,1),('c',1,'null'),('d','null',1),('e',1,1)], #,('f',1,'NaN'),('g','bla',1)],
schema=('id', 'foo', 'bar')
)
我获得了以下数据帧:
+---+----+----+
| id| foo| bar|
+---+----+----+
| a| 1|null|
| b| 1| 1|
| c| 1|null|
| d|null| 1|
| e| 1| 1|
+---+----+----+
当我应用所需的过滤器时,第一个过滤器(foo=1 AND bar=1)有效,但是另一个过滤器(foo=1 AND NOT bar=1)无效。
foobar_df = df.filter( (df.foo==1) & (df.bar==1) )
产生:
+---+---+---+
| id|foo|bar|
+---+---+---+
| b| 1| 1|
| e| 1| 1|
+---+---+---+
这里是不起作用的过滤器:
foo_df = df.filter( (df.foo==1) & (df.bar!=1) )
foo_df.show()
+---+---+---+
| id|foo|bar|
+---+---+---+
+---+---+---+
为什么它没有过滤?我该如何获取仅包含foo等于'1'的列?