这里的问题是
df[df[0] == True], 您没有将对象与进行比较
True。
就像其他答案所说的那样,它
==被重载
pandas以产生a
Series而不是
bool像通常那样。
[]也过载,以解释
Series并给出过滤后的结果。该代码本质上等效于:
series = df[0].__eq__(True)df.__getitem__(series)
因此,您离开这里 不会 违反PEP8
==。
本质上,
pandas给熟悉的语法提供了不寻常的语义-这就是造成混淆的原因。
根据Stroustroup(第3.3.3节)所述,自从操作符重载发明以来,操作符重载就一直为此引起麻烦(并且他不得不认真考虑是否将其包含在C
++中)。看到C
++中更多地滥用它,Gosling在Java中跑到了另一个极端,完全禁止了它,事实证明那是一个极端。
结果,现代语言和代码往往会出现运算符重载,但要密切注意不要过度使用它,并且语义要保持一致。



