Home > Blockchain >  python - pandas: creating a new dataframe with a list of keywords
python - pandas: creating a new dataframe with a list of keywords

Time:01-16

I have a dataframe of news headlines, like this:

df = pd.DataFrame({'texto': ['El Hubble registró imágenes de una "mariposa interestelar"',
                             'Con su Audi atropelló y mató a una pareja: lo juzgan y podrían darle 25 años',
                             'Clarín cumplió 70 años y lo celebró con su personal',
                             'A diez años de Katrina, Obama visitó Nueva Orleans y celebró la recuperación',
                             'La oposición volvió a juntarse y pidió la boleta única electrónica en octubre',
                             'Hallan a casi 50 “sin papeles” muertos en un camión en Austria'],
                   'id': [1,2,3,4,5,6]})

df['texto'] = df['texto'].str.lower()

searchwords = ['hubble','audi','obama','clarín','austria']

And I am trying to search if each and every single of some keywords selected appear in above dataframe to create a new one. I have tried 'startswith', but only contains the sentences where the keyowrds are first.

Code:
df = df[df['texto'].str.startswith(tuple(searchwords))]

Output:

clarín cumplió 70 años y lo celebró con su per...   3

Do you know a way to create a pandas line or a function to create a filter like this?

Thanks!

CodePudding user response:

Use

df2 = df[df['texto'].str.contains('|'.join(searchwords))]

CodePudding user response:

another option to do so (without vectorization hence less efficient) is:

def serach_term(texto, terms):
    if any([t in texto for t in terms]):
        return True
    return False

and

df['exists'] = df.apply(lambda x: serach_term(x['texto'],searchwords), axis=1)

desired result: [![enter image description here][1]][1]

you gain control on the function and can adjust accordingly BUT you move row by row and it's relatively slower.

    texto                                              id   exists
0   el hubble registró imágenes de una "mariposa i...   1   True
1   con su audi atropelló y mató a una pareja: lo ...   2   True
2   clarín cumplió 70 años y lo celebró con su per...   3   True
3   a diez años de katrina, obama visitó nueva orl...   4   True
4   la oposición volvió a juntarse y pidió la bole...   5   False
5   hallan a casi 50 “sin papeles” muertos en un c...   6   True
  • Related