今天老师讲pandas时,讲到布尔索引时,用的时 | ,而不是 and
例如:
1 np.random.seed(0) 2 df = pd.DataFrame(np.random.randn(5,3), columns=list('ABC')) 3 4 >>> df 5 A B C 6 0 1.764052 0.400157 0.978738 7 1 2.240893 1.867558 -0.977278 8 2 0.950088 -0.151357 -0.103219 9 3 0.410599 0.144044 1.454274 10 4 0.761038 0.121675 0.443863 11 12 >>> df.loc[(df.C > 0.25) | (df.C < -0.25)] 13 A B C 14 0 1.764052 0.400157 0.978738 15 1 2.240893 1.867558 -0.977278 16 3 0.410599 0.144044 1.454274 17 4 0.761038 0.121675 0.443863
如果a,b是数值变量, 则&, |表示位运算, and,or则依据是否非0来决定输出,
- &, |:
1 | 2 #输出 3,用二进制加法计算 1 & 2 #输出 0,
and, or:
# 判断变量是否为0, 是0则为False,非0判断为True, # and中含0,返回0; 均为非0时,返回后一个值, 2 and 0 # 返回0 2 and 1 # 返回1 1 and 2 # 返回2 # or中, 至少有一个非0时,返回第一个非0, 2 or 0 # 返回2 2 or 1 # 返回2 0 or 1 # 返回1
如何a, b是逻辑变量, 则两类的用法基本一致
In[103]:(3>0) | (3<1) Out[103]: True In[104]:(3>0) and (3<1) Out[104]: False In[105]:(3>0) or (3<1) Out[105]: True In[106]:(3>0) & (3<1) Out[106]: False
在DataFrame的切片过程,要注意逻辑变量的使用
df.loc[(df.C > 0.25) | (df.C < -0.25)]
参考: https://blog.csdn.net/weixin_40041218/article/details/80868521