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。足够近…另外:和
和或
不能覆盖的原因是它们短路。也就是说,第二个参数甚至可能不会被计算。