过滤python中包含一组字符串的数据帧行

时间:2018-06-09 16:01:19

标签: python python-3.x pandas

我有一个数据框 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天内搜索了很多关于堆栈溢出的解决方案

1 个答案:

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