我试图获取数据帧中的所有行,其中两个标志设置为'1',然后所有那些只有两个中的一个设置为'1'而另一个NOT EQUAL设置为'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')
)
Run Code Online (Sandbox Code Playgroud)
我获得以下数据帧:
+---+----+----+
| id| foo| bar|
+---+----+----+
| a| 1|null|
| b| 1| 1|
| c| 1|null|
| d|null| 1|
| e| 1| 1|
+---+----+----+
Run Code Online (Sandbox Code Playgroud)
当我应用所需的过滤器时,第一个过滤器(foo = 1 AND bar = 1)起作用,但不起作用(foo = 1 AND NOT bar = 1)
foobar_df = df.filter( (df.foo==1) & (df.bar==1) )
Run Code Online (Sandbox Code Playgroud)
收益率:
+---+---+---+
| id|foo|bar|
+---+---+---+
| b| 1| 1|
| e| 1| 1|
+---+---+---+
Run Code Online (Sandbox Code Playgroud)
这是非行为过滤器:
foo_df = df.filter( (df.foo==1) & (df.bar!=1) …Run Code Online (Sandbox Code Playgroud)