如果匹配另一个列表中的值,则提取字符串

R.y*_*yan 7 python pandas

我想获取查找列表的值而不是布尔值.我试过以下代码:

val = pd.DataFrame(['An apple','a Banana','a cat','a dog'])
lookup = ['banana','dog']
# I tried the follow code:
val.iloc[:,0].str.lower().str.contains('|'.join(lookup))
# it returns:
0    False
1     True
2    False
3     True
Name: 0, dtype: bool
Run Code Online (Sandbox Code Playgroud)

我想要的是:

0    False
1    banana
2    False
3    dog
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

use*_*203 10

您可以使用extract的替代contains,并fillnaFalse:

import re
p = rf'\b({"|".join(lookup)})\b'
val[0].str.extract(p, expand=False, flags=re.I).fillna(False)

        0
0   False
1  banana
2   False
3     dog
Run Code Online (Sandbox Code Playgroud)