python比较运算符不等于_python – PySpark中的比较运算符(不等于/!=)

我试图获取数据帧中的所有行,其中两个标志设置为’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')

)

我获得以下数据帧:

+---+----+----+

| 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’的列?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值