Indexation à conditions multiples Pandas : comportement inattendu
Avec les pandas, l'application de filtres à un DataFrame est une opération courante. Cependant, lors de l'utilisation de plusieurs conditions, en particulier avec des opérateurs logiques tels que AND et OR, des résultats inattendus peuvent se produire.
Problème :
Lors du filtrage des lignes en fonction des valeurs de deux colonnes , l'opérateur AND semble se comporter comme OR, et vice versa. Par exemple, le code ci-dessous devrait :
<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>
Explication :
Le comportement inattendu provient de la façon dont les opérateurs logiques sont interprétés dans le contexte de l'indexation des pandas.
Opérateur AND :
Opérateur OU :
Par conséquent, l'opérateur AND se comporte comme OR car il exclut les lignes en fonction de l'absence de -1 dans l'une ou l'autre des colonnes. À l'inverse, l'opérateur OR se comporte comme AND car il inclut des lignes uniquement lorsque les deux colonnes ne contiennent pas -1.
Remarque supplémentaire :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!