python: and 和 & 造成的一次BUG || 【补】在Pandas中对多列进行布尔运算筛选行

问题描述:

在某次网上限时做题过程中,我某个循环退出条件是i等于0同时j等于2,当时写成了 

 i == 0 & j == 2 

导致程序无法正常退出循环。代价惨痛啊···(大概就是把c++和python混淆了的后果)

有两个原因:

1. Python里面&是位运算。具体描述可以直接搜索。

2. Python运算优先级是位运算处于较高的位置。逻辑与、或处于较低的位置。准确的说是:

&优先于==优先于and

因此

 i == 0 & j == 2 

等价于 

i == (0 & j) == 2

参考资料:

Python 运算符优先级

https://www.jianshu.com/p/5348eb23ede3

 

补充:

在Pandas中对多列进行布尔运算筛选新表的过程:

df_part = df[ (df['columnA']>2.4) & (df['columnB'] <10.2) ]

这种方式挑选dataframe行的时候,要注意,&是位运算,优先级非常高,因此要给 df['columnA']>2.4 打括号。

其次,中间如果用 and, or 连接则会报错···

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值