Maison > Article > développement back-end > Pourquoi l'utilisation des opérateurs AND (`&`) et OR (`|`) dans les opérations de filtrage Pandas produit-elle des résultats inattendus ?
Dans l'analyse des données, les pandas sont une bibliothèque cruciale pour manipuler et traiter les trames de données. Lors de l'exécution d'opérations de filtrage, il est essentiel de comprendre le comportement des opérateurs lors de l'utilisation de plusieurs conditions.
Considérons un scénario dans lequel nous souhaitons filtrer les lignes d'un bloc de données en fonction des valeurs de deux colonnes, "a" et " b'. Utilisation de l'opérateur AND '&' et OR '|' opérateur, nous nous attendons à ce que AND supprime les lignes où au moins une valeur est égale à -1 tandis que OR doit conserver les lignes où les deux valeurs sont -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>
De façon inattendue, l'opérateur AND supprime chaque ligne où au moins une valeur est -1, tandis que l'opérateur OR nécessite que les deux valeurs soient -1 pour les supprimer.
La clé pour comprendre ce comportement réside dans le fait de se rappeler que nous écrivons la condition en fonction de ce que nous voulons conserver, pas ce que nous voulons supprimer.
Il est crucial d'utiliser un accès chaîné comme df.loc et df.iloc au lieu de df['a'][1] = -1 pour éviter des problèmes potentiels.
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!