将列表传递给str.contains - Pandas

4
我有一个与Pandas相关的问题:我需要基于包含(或不包含)在列中的子字符串来过滤一列(约40k条目)。列中的每个条目基本上都是一个非常长的属性列表(文本),我需要能够单独过滤这些属性。这行代码有效,但不可扩展(我必须为数百个属性进行过滤):
df[df['Product Lev 1'].str.contains('W1 Rough wood', na=False) & df['Product Lev 1'].str.contains('W1.2', na=False)]

有没有可能将我需要过滤的所有项目插入并传递为列表?或者任何类似的解决方案?

谢谢!


请阅读以下内容:https://stackoverflow.com/help/how-to-ask,并更新帖子。 - Zaraki Kenpachi
1个回答

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)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接