为什么pandas使用(&,|)而不是普通的pythonic(和,或)?

时间:2013-12-19 20:55:46

标签: python pandas

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

例如:

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)])   

返回以下内容:

          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()

1 个答案:

答案 0 :(得分:16)

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

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

有关相关文档,请参阅here