2017-10-03 2 views
1

Salut, j'ai une liste de mots-clés.Comment mapper des mots clés sévaral avec une valeur de colonne de données en utilisant des pandas en python

keyword_list=['one','two'] 

DF, 

    Name  Description 
    Sri  Sri is one of the good singer in this two 
    Ram  Ram is one of the good cricket player 

Je veux trouver les lignes qui ont toutes les valeurs de ma liste de mots-clés.

ma sortie désirée est,

output_Df, 
    Name Description 
    Sri  Sri is one of the good singer in this two 

I tried, mask=DF['Description'].str.contains() method but I can do this only for a single word pls help. 

Répondre

2

Utilisation np.logical_and + reduce de tous les masques créés par list comprehension:

keyword_list=['one','two'] 

m = np.logical_and.reduce([df['Description'].str.contains(x) for x in keyword_list]) 
df1 = df[m] 
print (df1) 

    Name        Description 
0 Sri Sri is one of the good singer in this two 

Alternatives pour le masque:

m = np.all([df['Description'].str.contains(x) for x in keyword_list], axis=0) 

#if no NaNs 
m = [set(x.split()) >= set(keyword_list) for x in df['Description']] 
+1

votre solution pour la question ci-dessus travaille bien, pourriez-vous s'il vous plaît me suggérer meilleurs tutoriels pour numpy et pandas que je veux être bon esprit frappé. – pyd

+0

Difficile question, à mon avis le meilleur sont la documentation des pandas et des tutoriels, en particulier j'aime les [pandas modernes] (http://pandas.pydata.org/pandas-docs/stable/tutorials.html#modern-pandas). – jezrael

+0

d'accord, merci – pyd