Maison > développement back-end > Tutoriel Python > Comment les expressions régulières peuvent-elles améliorer les performances de filtrage des sous-chaînes de la série Pandas ?

Comment les expressions régulières peuvent-elles améliorer les performances de filtrage des sous-chaînes de la série Pandas ?

DDD
Libérer: 2024-11-27 00:14:10
original
684 Les gens l'ont consulté

How Can Regular Expressions Improve Pandas Series Substring Filtering Performance?

Amélioration des performances du filtrage de plusieurs sous-chaînes dans la série Pandas

Lorsque vous tentez de filtrer des lignes où une colonne de chaîne spécifique contient au moins une sous-chaîne d'un étant donné la liste, les méthodes conventionnelles utilisant np.logical_or.reduce() peuvent être inefficaces pour les grands ensembles de données. Cet article explore une approche alternative tirant parti des expressions régulières pour améliorer les performances.

Solution proposée

Au lieu d'utiliser regex=False dans str.contains(), nous utilisons des expressions régulières après avoir correctement échappé aux sous-chaînes fournies à l'aide de re.escape(). Cela garantit des correspondances littérales plutôt qu’une interprétation regex. Les sous-chaînes échappées sont ensuite combinées en un seul motif à l'aide d'un tube regex (|).

Processus de masquage

L'étape de masquage devient une boucle à travers la série, vérifiant si chaque chaîne correspond au motif :

df[col].str.contains(pattern, case=False)
Copier après la connexion

Performance Comparaison

En utilisant un exemple d'ensemble de données avec 100 sous-chaînes de longueur 5 et 50 000 chaînes de longueur 20, la méthode proposée a pris environ 1 seconde. La méthode d'origine prenait environ 5 secondes pour les mêmes données.

Remarque

Cette solution suppose un scénario du « pire des cas » où il n'y a aucune correspondance de sous-chaîne. En cas de matchs, les performances seront encore améliorées. De plus, cette approche est plus efficace que la méthode initiale, réduisant le nombre de contrôles requis par ligne.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal