Pandas 多条件索引:意外行为
对于 pandas,将过滤器应用于 DataFrame 是一种常见操作。但是,当使用多个条件时,尤其是使用 AND 和 OR 等逻辑运算符时,可能会出现意外结果。
问题:
根据两列中的值过滤行时,AND 运算符的行为类似于 OR,反之亦然。例如,下面的代码应该:
<code class="python">df = pd.DataFrame({'a': range(5), 'b': range(5) }) df['a'][1] = -1 df['b'][1] = -1 df['a'][3] = -1 df['b'][4] = -1 df1 = df[(df.a != -1) & (df.b != -1)] df2 = df[(df.a != -1) | (df.b != -1)] print(pd.concat([df, df1, df2], axis=1, keys=['original df', 'using AND (&)', 'using OR (|)',]))</code>
解释:
意外行为源于逻辑运算符在 pandas 索引上下文中的解释方式。
AND 运算符:
或运算符:
因此,AND 运算符的行为类似于 OR,因为它根据任一列中不存在 -1 来排除行。相反,OR 运算符的行为类似于 AND,因为仅当两列都不包含 -1 时它才包含行。
附加说明:
以上是为什么具有多个条件的 Pandas 索引会表现出意外的行为?的详细内容。更多信息请关注PHP中文网其他相关文章!