pandas series match multiple keywords Is there a direct python pandas method to match values of series and update different series with some string ? I couldn’t find any direct method of doing it.
Here the match is to find a value in a series that is made up of given set of keywords and one mandatory keyword.
Example :
Here’s the keywords table :
KW:
case,kws,mand_kw,Friendly name
1,full|name|nm|txt|dsc[0-9],full,Full Name
2,first|name|nm|txt|dsc|[0-9],first,First Name
3,last|name|nm|txt|dsc|[0-9],last,Last Name
4,legal|name|nm|txt|dsc|[0-9],legal,Legal Name
5,nick|name|nm|txt|dsc|[0-9],nick,Nick Name

DF
_id,field_name,field_friendly_name,purpose_of_use,is_included_in_report
1,FullName,,,
2,xyz,,,
3,custname,,,
4,FullNm,,,
5,FirstName,,,
6,abc,,,
7,FirstNm,,,
8,LastName,,,
9,LastNm,,,
10,LegalName,,,
11,LegalNm,,,
12,NickName,,,
13,pqr,,,
14,NickNm,,,

For each of kws from KW find match in field_name in DF that it is made up of only keywords specified in kws and not any other words and a mandatorily should have a mand_kw keyword.
For example :
Case1:
Find all field_name that is only made up of these set of keywords “Full|name|nm|txt|dsc|[0-9]” and mandatory contains keyword &quot;full&quot; if so, assign field_friendly_name of KW - “Full Name” to field_friendly_name in DF and update is_included_in_report as true.
If the value is not made of these keywords, then skip.
_id,field_name,field_friendly_name,purpose_of_use,is_included_in_report
1,fullname,Full Name,,TRUE
4,fullnm,Full Name,,TRUE
8,fullname74,Full Name,,TRUE
9,fulltxt,Full Name,,TRUE
here's what I've tried:
import pandas 
import re

KW = pd.read_csv(&quot;regex.csv&quot;)
DF = pd.read_csv(&quot;Default-Profile.csv&quot;)

for i in range (0,KW.kws.size): 
    for j in range (0,DF.field_name.size):
            if (DF.field_name.match(r&quot;KW.kws[i]&quot;) == True &amp;&amp; (DF.field_name.match(r&quot;mand_kw[i]&quot; == True)):
                    DF.field_friendly_name[j] = KW.field_friendly_name[i]
                    DF.is_included_in_report[j] = &quot;True&quot;