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

时间:2018-07-16 02:43:17

标签: 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

我想要什么:

0    False
1    banana
2    False
3    dog

感谢您的帮助。

1 个答案:

答案 0 :(得分: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