Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么熊猫使用(&;,|)而不是正常的、蟒蛇的(and,or)?_Python_Pandas - Fatal编程技术网

Python 为什么熊猫使用(&;,|)而不是正常的、蟒蛇的(and,or)?

Python 为什么熊猫使用(&;,|)而不是正常的、蟒蛇的(and,or)?,python,pandas,Python,Pandas,我理解这是惯例的解释,但我想知道为什么 例如: import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(6,4), index=list('abcdef'), columns=list('ABCD')) print(df[(df.A < .5) | (df.B > .5)]) print(df[(df.A < .5) or (df.B > .5)]) 将熊猫作为pd导入 将n

我理解这是惯例的解释,但我想知道为什么

例如:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(6,4), index=list('abcdef'), columns=list('ABCD'))
print(df[(df.A < .5) | (df.B > .5)])
print(df[(df.A < .5) or (df.B > .5)])   
将熊猫作为pd导入
将numpy作为np导入
df=pd.DataFrame(np.random.randn(6,4),index=list('abcdef'),columns=list('ABCD'))
打印(df[(df.A<.5)|(df.B>.5)])
打印(df[(df.A<0.5)或(df.B>0.5)])
返回以下内容:

          A         B         C         D
a -0.284669 -0.277413  2.524311 -1.386008
b -0.190307  0.325620 -0.367727  0.347600
c -0.763290 -0.108921 -0.467167  1.387327
d -0.241815 -0.869941 -0.756848 -0.335477
e -1.583691 -0.236361 -1.007421  0.298171
f -3.173293  0.521770 -0.326190  1.604712
Traceback (most recent call last):
  File "C:\test.py", line 64, in <module>
    print(df[(df.A < .5) or (df.B > .5)])   
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
A B C D
a-0.284669-0.277413 2.524311-1.386008
b-0.190307 0.325620-0.367727 0.347600
c-0.763290-0.108921-0.467167 1.387327
d-0.241815-0.869941-0.756848-0.335477
e-1.583691-0.236361-1.007421 0.298171
f-3.173293 0.521770-0.326190 1.604712
回溯(最近一次呼叫最后一次):
文件“C:\test.py”,第64行,在
打印(df[(df.A<0.5)或(df.B>0.5)])
ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()

因为
&
|
是可重写的(可自定义的)。您可以编写驱动任何
类的运算符的代码

另一方面,逻辑运算符
以及
具有无法修改的标准行为


请参阅相关文档。

我想第二部分的相关问题/答案是:因为每个结果都是一个真/假列表,与位密切相关,因此按位运算符绝对有意义(除了这里给出的答案……还有您是如何让自己的名字这么做的(@answerer)?)在BBS时代,它只是一些unicode和一些普通字符n->u,m->w,d->pBack,我们过去用
umop apsidn
编写,只是使用好的ol'ASCII。足够近…另外:
不能覆盖的原因是它们短路。也就是说,第二个参数甚至可能不会被计算。