在数据分析中,pandas 是操作和处理数据帧的重要库。在执行过滤操作时,了解使用多个条件时运算符的行为至关重要。
让我们考虑一个场景,我们想要根据两列“a”和“a”中的值过滤数据框中的行。 b'。使用 AND '&' 运算符和 OR '|'运算符,我们期望 AND 删除至少一个值等于 -1 的行,而 OR 应保留两个值均为 -1 的行。
<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>
意外的是,AND 运算符删除至少有一个值的每一行是 -1,而 OR 运算符要求两个值都为 -1 才能删除它们。
理解这种行为的关键在于记住我们正在根据我们想要保留的内容编写条件,不是我们想要删除的。
使用 df.loc 和 df.iloc 等链式访问而不是 df['a'][1] = -1 来避免潜在问题至关重要。
以上是为什么在 Pandas 过滤操作中使用 AND (`&`) 和 OR (`|`) 运算符会产生意外的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!