pandas.DataFrame 为什么要使用括号将操作包裹起来进行按位比较

Dwa*_*Dwa 1 python pandas

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

c[(c['price'] == 2) | (c['price'] == 3)]
Run Code Online (Sandbox Code Playgroud)

但在这里不起作用:

c[c['price'] == 2 | c['price'] == 3]
Run Code Online (Sandbox Code Playgroud)

并引发异常:

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

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

非常感谢!

Tre*_*ney 5

  • 根据Pandas:布尔索引
    • 另一个常见的操作是使用布尔向量来过滤数据。运算符是:|for or&forand~for not。这些必须通过使用括号,由于默认的Python将评估例如表达被分组df['A'] > 2 & df['B'] < 3df['A'] > (2 & df['B']) < 3,而所希望的评价顺序是(df['A > 2) & (df['B'] < 3)