Test de la présence de sous-chaînes dans les chaînes à l'aide de Pandas DataFrame
Lorsque vous travaillez avec des données de chaîne dans la bibliothèque Pandas de Python, vous devrez peut-être déterminer si une chaîne contient n'importe quelle sous-chaîne d'une liste donnée. Bien qu'il existe diverses fonctions qui vérifient la présence de sous-chaînes, telles que df.isin() et df[col].str.contains(), les utiliser en combinaison peut être quelque peu complexe.
Supposons que nous ayons un Pandas Séries contenant des chaînes telles que « chat », « chapeau », « chien », « brouillard » et « animal de compagnie », et nous souhaitons identifier toutes les chaînes qui incluent « og » ou "at."
Une solution consiste à utiliser un modèle d'expression régulière qui correspond à n'importe quelle sous-chaîne de la liste en utilisant le "|" personnage. Par exemple, en joignant les sous-chaînes dans la recherche à l'aide de "|", nous créons une expression régulière :
>>> searchfor = ['og', 'at'] >>> regex_pattern = '|'.join(searchfor) >>> s[s.str.contains(regex_pattern)] 0 cat 1 hat 2 dog 3 fog dtype: object
Cette approche trouve efficacement toutes les chaînes dans s qui contiennent "og" ou "at". C'est une méthode concise et efficace.
Cependant, si les sous-chaînes de la recherche contiennent des caractères spéciaux comme "$" ou "^", il est crucial de les échapper à l'aide de re.escape() pour garantir une correspondance littérale. Par exemple :
>>> import re >>> matches = ['$money', 'x^y'] >>> safe_matches = [re.escape(m) for m in matches] >>> regex_pattern = '|'.join(safe_matches) >>> s[s.str.contains(regex_pattern)] 0 cat 1 hat 2 dog 3 fog dtype: object
En échappant aux caractères spéciaux, nous nous assurons qu'ils correspondent littéralement à chaque caractère lorsqu'ils sont utilisés avec str.contains. Cette approche fournit une solution robuste pour la détection de sous-chaînes dans la série Pandas.
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!