Python 若字段包含列表中的任何字符串,则向数据集添加标志

Python 若字段包含列表中的任何字符串,则向数据集添加标志,python,regex,pandas,Python,Regex,Pandas,我有一个数据集,我正在其中进行字符串搜索。我有一个要搜索的字符串列表,如果其中有任何字符串出现,则标志应设置为“Y” 例如 #Import key libraries import pandas as pd import numpy as np data = {'Strings': ['Profit Sharing', 'Defined Benefit', 'Defined Contribution', '401(K)']} df=pd.DataFrame (data, columns=['

我有一个数据集,我正在其中进行字符串搜索。我有一个要搜索的字符串列表,如果其中有任何字符串出现,则标志应设置为“Y”

例如

#Import key libraries
import pandas as pd
import numpy as np

data = {'Strings': ['Profit Sharing', 'Defined Benefit', 'Defined Contribution', '401(K)']}

df=pd.DataFrame (data, columns=['Strings'])

df['Flag']=np.nan

StringList=['MONEY PURCHASE', 'MPP', 'DEFINED CONTRIBUTION', 'DEFINED CONT', 'SELF', 'KEOGH', 'KEOUGH', 'PROFIT', 'PSP', 'P-S PLAN', 'PS PL', 'SAVINGS', 'AGE-WEIGHTED', 'AGE WEIGHTED', 'NEW COMPARABILITY', 'THRIFT', 'STOCK BONUS', '401K', 'K401', '401(K)', '401 (K)', '4401-PW', '401PW', '401-K', '408K', '408 K', 'K408', '408(K)', '408 (K)', '408-K']

StringPattern="|".join(StringList)

df['Flag']=df['Strings'].str.contains(StringPattern, case=False)

print(df)


任何带有“401”的字符串都不会被拾取。看起来它没有被当作字符串处理。如何修复它?

您需要转义特殊的正则表达式符号


将字符串列表中的“401(K)”更改为“401\(K\)”。

有效。非常感谢!