Maison > développement back-end > Tutoriel Python > Comment puis-je filtrer efficacement les lignes Pandas en fonction de plusieurs sous-chaînes, y compris les caractères spéciaux ?

Comment puis-je filtrer efficacement les lignes Pandas en fonction de plusieurs sous-chaînes, y compris les caractères spéciaux ?

Patricia Arquette
Libérer: 2024-11-28 09:09:15
original
566 Les gens l'ont consulté

How Can I Efficiently Filter Pandas Rows Based on Multiple Substrings, Including Special Characters?

Pandas : filtrer efficacement les lignes pour plusieurs sous-chaînes

Le filtrage des trames de données Pandas en fonction de plusieurs sous-chaînes peut être difficile, en particulier lorsque les sous-chaînes contiennent des caractères inhabituels . Cet article fournit une solution efficace utilisant une combinaison de fonctions de correspondance de chaînes regex et pandas.

La liste de sous-chaînes fournie (lst) contient des éléments avec des caractères normaux et spéciaux. Pour les faire correspondre littéralement, nous pouvons échapper à ces caractères spéciaux en utilisant re.escape et les joindre à l'aide d'un tube regex (|).

esc_lst = [re.escape(s) for s in lst]
pattern = '|'.join(esc_lst)
Copier après la connexion

Maintenant, nous pouvons vérifier efficacement chaque ligne de la colonne cible (col) contre le modèle utilisant str.contains :

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

Cette approche surpasse considérablement la solution originale, qui utilisait des boucles imbriquées et plusieurs str.contains appels.

Comparaison des performances

En utilisant un ensemble de données avec 50 000 chaînes de 20 caractères et 100 sous-chaînes de 5 caractères, la méthode proposée prend environ 1 seconde :

%timeit col.str.contains(pattern, case=False)
1 loop, best of 3: 981 ms per loop
Copier après la connexion

En comparaison, l'approche originale prenait environ 5 secondes sur la même ensemble de données.

Remarque : Les horaires représentent les pires scénarios où il n'y a eu aucune correspondance. La méthode proposée fonctionnera encore mieux lorsqu'il y aura des correspondances, car elle cessera de vérifier les sous-chaînes une fois qu'une correspondance sera trouvée.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal