Maison >développement back-end >Tutoriel Python >Indexation booléenne Pandas : pourquoi utiliser « & » au lieu de « et » ?
Lors de l'indexation booléenne dans Pandas, il est crucial de comprendre la différence entre les opérateurs logiques & (ET au niveau du bit) et et ( AND logique).
Considérons l'exemple suivant :
a = pd.DataFrame({'x': [1, 1], 'y': [10, 20]}) a[(a['x'] == 1) & (a['y'] == 10)]
Ce code renvoie le résultat attendu :
x y 0 1 10
Cependant, si vous utilisez et au lieu de &, vous' Je rencontrerai une erreur :
a[(a['x'] == 1) and (a['y'] == 10)]
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
L'erreur se produit parce que et essaie d'évaluer la véracité de chaque série individuellement (a['x'] et a['y']). Cependant, ces séries n'ont pas de valeur booléenne claire, ce qui conduit à une erreur de valeur de vérité ambiguë.
En revanche, l'opérateur au niveau du bit & effectue des opérations logiques au niveau des éléments. Il renvoie un tableau booléen où chaque élément représente le résultat de l'opération entre les éléments correspondants dans a['x'] et a['y']. Cela vous permet de créer un masque booléen pour l'indexation.
Notez qu'il est obligatoire d'utiliser des parenthèses lors de l'utilisation de &. Sans eux, l'opération serait mal évaluée en raison de la priorité d'opérateur plus élevée de & over ==.
a['x'] == 1 & a['y'] == 10 # Incorrect: Triggers the error (a['x'] == 1) & (a['y'] == 10) # Correct: Boolean indexing works as expected
Lors de l'indexation booléenne dans Pandas, utilisez toujours l'opérateur & pour opérations logiques par éléments. Cela garantit une évaluation appropriée et évite l'erreur de valeur de vérité ambiguë.
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!