熊猫系列匹配多个关键字

数据挖掘 Python 熊猫 正则表达式
2022-02-17 09:16:30

是否有直接的 python pandas 方法来匹配系列的值并用一些字符串更新不同的系列?我找不到任何直接的方法。

这里的匹配是在由给定的一组关键字和一个强制关键字组成的系列中找到一个值。

例子 :

这是关键字表:

千瓦:

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

东风

_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,,,

对于来自 KW 的每个 kws 在 DF 中的 field_name 中找到匹配项,它仅由 kws 中指定的关键字而不是任何其他单词组成,并且强制应该具有 mand_kw 关键字。

例如 :

情况1:

查找仅由这组关键字“Full|name|nm|txt|dsc|[0-9]”组成的所有 field_name,并且强制包含关键字“full”,如果是,则将 KW 的 field_friendly_name - “Full Name”分配给DF 中的 field_friendly_name 并将 is_included_in_report 更新为 true。如果值不是由这些关键字组成的,则跳过。

_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
1个回答

这是我尝试过的:

import pandas 
import re

KW = pd.read_csv("regex.csv")
DF = pd.read_csv("Default-Profile.csv")

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