将列表传递给 str.contains - Pandas

Bla*_*t83 4 python string filter pandas

我有一个与 pandas 相关的问题:我需要根据列中包含(或不包含)的子字符串来过滤列(大约 40k 条目)。该列中的每个条目基本上都是一个很长的属性(文本)列表,我需要能够单独过滤它们。这行代码可以工作,但不可扩展(我有数百个必须过滤的属性):

df[df['Product Lev 1'].str.contains('W1 Rough wood', na=False) & df['Product Lev 1'].str.contains('W1.2', na=False)]
Run Code Online (Sandbox Code Playgroud)

是否有可能插入我必须过滤的所有项目并将其作为列表传递?或者任何类似的解决方案?

谢谢你!

小智 6

像这样:

data = {'col_1': [3, 2, 1, 0], 'col_2': ['aaaaDB', 'bbbbbbCB', 'cccccEB', 'ddddddUB']}
df=pd.DataFrame.from_dict(data)
lst = ['DB','CB']  #replace with your list
rstr = '|'.join(lst)
df[df['col_2'].str.upper().str.contains(rstr)]
Run Code Online (Sandbox Code Playgroud)