IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Calcul scientifique Python Discussion :

Recherche stricte d'un mot clé (pattern) dans un data frame PANDAS


Sujet :

Calcul scientifique Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2003
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 4
    Points : 6
    Points
    6
    Par défaut Recherche stricte d'un mot clé (pattern) dans un data frame PANDAS
    Bonjour à tous,

    Je travaille depuis quelques jours sur un data frame pandas contenant 13 colonnes et 500 lignes.
    Je souhaiterai extraire les lignes contenant un mot-clé et que cette extraction soit stricte, càd:
    si mon mot-clé est par exemple UBER, je souhaiterai qu'il ne m'extrait pas en même temps AUBER ou UBER492 ou d'autres lignes contenant ces derniers mots.
    J'ai utilisé un masque tel que:
    mask=np.column_stack([df[col].astype(str).str.contains(pattern) for col in df])

    et, évidemment le mot UBER étant inclus dans AUBER ou UBER492, il extrait ces lignes également.
    Comment faire pour préciser que je souhaite une extraction STRICTE des lignes contenant le pattern désigné et seulement ces lignes ?

    J'ai cherché partout dans la doc de pandas et je ne trouve pas .
    Quelqu'un a-t-il une idée ?
    Merci beaucoup d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 129
    Points : 36 462
    Points
    36 462
    Par défaut
    Salut,

    Citation Envoyé par zigroful Voir le message
    J'ai cherché partout dans la doc de pandas et je ne trouve pas .
    Quelqu'un a-t-il une idée ?
    A côté de str.contains, la documentation mentionne aussi str.match, str.fullmatch,...
    Et la documentation de contains suggère d'aller voir aussi match.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 16
    Points : 20
    Points
    20
    Par défaut
    La publication est ancienne, mais ça pourait être utile à d'autres personnes.
    Pour effectuer une extraction stricte des lignes contenant le mot-clé dans un dataframe Pandas, vous pouvez utiliser la méthode str.match() avec un motif de regex qui indique que le mot-clé doit être seul dans la chaîne de caractères. Par exemple, si votre mot-clé est "UBER", vous pouvez utiliser le motif suivant pour ne sélectionner que les lignes qui contiennent exactement "UBER" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pattern = r"\bUBER\b"
    mask = df.astype(str).apply(lambda x: x.str.match(pattern))
    strict_df = df[mask]
    Le motif \bUBER\b indique que "UBER" doit être précédé et suivi par un début ou une fin de chaîne de caractères, ce qui empêche les lignes contenant "AUBER" ou "UBER492" d'être incluses dans le résultat.

    Il est également possible de remplacer apply() par applymap() pour s'assurer que la fonction de filtrage est appliquée à chaque élément de la colonne, plutôt qu'à chaque colonne en entier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mask = df.astype(str).applymap(lambda x: bool(re.match(pattern, x)))
    strict_df = df[mask]
    Ceci devrait vous permettre d'obtenir un dataframe qui ne contient que les lignes strictement correspondant à votre mot-clé.

Discussions similaires

  1. Match 'date&temps' dans 2 data.frames différents
    Par arnaud.lucas dans le forum R
    Réponses: 0
    Dernier message: 24/10/2011, 16h04
  2. Rajout d'une colonne dans une data frame
    Par kalapiso dans le forum R
    Réponses: 2
    Dernier message: 23/10/2011, 15h43
  3. Suppression de colonnes dans un data.frame
    Par ricoben dans le forum R
    Réponses: 1
    Dernier message: 13/04/2010, 18h13
  4. Mean par colonne dans une data frame
    Par manoir dans le forum R
    Réponses: 3
    Dernier message: 19/06/2009, 12h06
  5. Réponses: 2
    Dernier message: 14/11/2008, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo