Maison >développement back-end >Tutoriel Python >Comment puis-je effectuer efficacement le filtrage SQL IN et NOT IN dans Pandas ?

Comment puis-je effectuer efficacement le filtrage SQL IN et NOT IN dans Pandas ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-20 20:05:17357parcourir

How Can I Efficiently Perform SQL's IN and NOT IN Filtering in Pandas?

Filtrage de type SQL orienté objet dans Pandas

Le filtrage des trames de données Pandas est une tâche cruciale dans l'analyse des données et la compréhension de la façon d'utiliser efficacement Les opérateurs de type SQL peuvent grandement simplifier ce processus. Plus précisément, les opérateurs IN et NOT IN sont largement utilisés pour sélectionner des lignes en fonction de critères d'appartenance.

Pandas Équivalent des IN et NOT IN de SQL

Pour obtenir l'équivalent de Opérateur IN de SQL dans Pandas, vous pouvez exploiter la méthode isin() sur une série. Cette méthode vérifie si chaque élément de la série est contenu dans une liste ou un ensemble spécifié. Par exemple, pour filtrer un dataframe en fonction d'une liste de pays à inclure :

df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']})
countries_to_keep = ['UK', 'China']
df[df['country'].isin(countries_to_keep)]

Cela renverra un dataframe contenant uniquement les lignes où les valeurs de la colonne country sont présentes dans la liste country_to_keep.

Pour effectuer l'équivalent de NOT IN de SQL, annulez simplement la méthode isin() en utilisant l'opérateur ~ :

df[~df['country'].isin(countries_to_keep)]

Cela produira un dataframe excluant les lignes où les valeurs de la colonne country correspondent à la liste spécifiée.

Exemple

Considérez le dataframe suivant :

df = pd.DataFrame({'country': ['US', 'UK', 'Germany', 'China']})
countries_to_keep = ['UK', 'China']

Pour sélectionner uniquement lignes avec des pays dans country_to_keep :

df_filtered_in = df[df['country'].isin(countries_to_keep)]

Cela entraînera dans :

    country
1        UK
3     China

Pour sélectionner des lignes avec des pays qui ne figurent pas dans country_to_keep :

df_filtered_not_in = df[~df['country'].isin(countries_to_keep)]

Cela produira :

    country
0        US
2   Germany

Conclusion

La méthode isin() dans Pandas fournit un moyen pratique et efficace d'implémenter un filtrage de style IN et NOT IN, offrant un outil puissant pour manipuler des dataframes en fonction de critères d'adhésion.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn