我有一个数据框 df ,如 -
A B
12 A cat
24 The dog
54 An elephant
我必须根据包含字符串列表的B列上的值来过滤行。我可以为字符串“cat”执行以下操作:
df[df["B"].str.contains("cat", case=False, na=False)]
这会让我回头
A B
12 A cat
但现在我想过滤一下字符串列表,即['cat','dog',.....]。
A B
12 A cat
24 The dog
我可以使用for循环来做到这一点,但我正在寻找熊猫这样做的方法。我使用的是python3和pandas,并且在过去2天内搜索了很多关于堆栈溢出的解决方案
答案 0 :(得分:2)
将join
与|
一起用于带有OR
的正则表达式\b
用于字边界:
L = ['cat', 'dog']
pat = r'(\b{}\b)'.format('|'.join(L))
df[df["B"].str.contains(pat, case=False, na=False)]