繁体   English   中英

pandas.DataFrame 为什么要用括号包裹运算来进行按位比较

[英]pandas.DataFrame why use parenthesis to wrap operations to make bitwise comparison

DataFrame 称为 c,它有一个名为 price 的列,我想知道价格等于 2 或 3 的行。代码在这里工作

c[(c['price'] == 2) | (c['price'] == 3)]

但在这里不起作用:

c[c['price'] == 2 | c['price'] == 3]

并引发异常:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

唯一的区别在于第二行代码,操作中没有括号'()'。 那么为什么括号如此重要呢?

非常感谢!

  • 根据Pandas:Boolean 索引
    • 另一种常见的操作是使用 boolean 向量来过滤数据。 运算符是: | or , &and , and ~not . 这些必须使用括号进行分组,因为默认情况下 Python 将评估表达式,例如df['A'] > 2 & df['B'] < 3 as df['A'] > (2 & df['B']) < 3 ,而所需的评估顺序是(df['A > 2) & (df['B'] < 3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM