Pandas : comment utiliser LIKE dans la requête ()



Vous pouvez utiliser les méthodes suivantes pour utiliser LIKE (similaire à SQL) dans une fonction pandas query() afin de rechercher des lignes contenant un modèle particulier :

Méthode 1 : rechercher les lignes contenant un modèle

df.query('my_column.str.contains("pattern1")')

Méthode 2 : rechercher des lignes contenant l’un des plusieurs modèles

df.query('my_column.str.contains("pattern1|pattern2")')

Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le DataFrame pandas suivant :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'team': ['Cavs', 'Heat', 'Mavs', 'Mavs', 'Nets',
                            'Heat', 'Cavs', 'Jazz', 'Jazz', 'Hawks'],
                   'points': [3, 3, 4, 5, 4, 7, 8, 7, 12, 14],
                   'rebounds': [15, 14, 14, 10, 8, 14, 13, 9, 5, 4]})

#view DataFrame
print(df)

    team  points  rebounds
0   Cavs       3        15
1   Heat       3        14
2   Mavs       4        14
3   Mavs       5        10
4   Nets       4         8
5   Heat       7        14
6   Cavs       8        13
7   Jazz       7         9
8   Jazz      12         5
9  Hawks      14         4

Exemple 1 : rechercher des lignes contenant un modèle

Le code suivant montre comment utiliser la fonction query() pour rechercher toutes les lignes du DataFrame qui contiennent « avs » dans la colonne team :

df.query('team.str.contains("avs")')

        team	points	rebounds
0	Cavs	3	15
2	Mavs	4	14
3	Mavs	5	10
6	Cavs	8	13

Chaque ligne renvoyée contient « avs » quelque part dans la colonne d’équipe .

Notez également que cette syntaxe est sensible à la casse.

Ainsi, si nous utilisions « AVS » à la place, nous ne recevrions aucun résultat car aucune ligne ne contient « AVS » majuscule dans la colonne de l’ équipe .

Exemple 2 : rechercher des lignes contenant l’un des plusieurs modèles

Le code suivant montre comment utiliser la fonction query() pour rechercher toutes les lignes du DataFrame qui contiennent « avs » ou « eat » dans la colonne team :

df.query('team.str.contains("avs|eat")')

        team	points	rebounds
0	Cavs	3	15
1	Heat	3	14
2	Mavs	4	14
3	Mavs	5	10
5	Heat	7	14
6	Cavs	8	13

Chaque ligne renvoyée contient soit « avs » soit « eat » quelque part dans la colonne d’équipe .

Remarque : Le | L’opérateur signifie « ou » en pandas. N’hésitez pas à en utiliser autant que vous le souhaitez pour rechercher encore plus de modèles de chaînes.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans les pandas :

Pandas : Comment filtrer les lignes en fonction de la longueur de la chaîne
Pandas : Comment supprimer des lignes en fonction de la condition
Pandas : Comment utiliser le filtre « NON IN »

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *