检查字符串是否在另一列 pandas 中

Ann*_*s15 6 python pandas

下面是我的DF

df= pd.DataFrame({'col1': ['[7]', '[30]', '[0]', '[7]'], 'col2': ['[0%, 7%]', '[30%]', '[30%, 7%]', '[7%]']})

col1    col2    
[7]     [0%, 7%]
[30]    [30%]
[0]     [30%, 7%]
[7]     [7%]
Run Code Online (Sandbox Code Playgroud)

目的是检查 col1 值是否包含在下面的 col2 中是我尝试过的

df['test'] = df.apply(lambda x: str(x.col1) in str(x.col2), axis=1)
Run Code Online (Sandbox Code Playgroud)

以下是预期输出

col1    col2       col3
[7]     [0%, 7%]   True
[30]    [30%]      True
[0]     [30%, 7%]  False
[7]     [7%]       True
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 2

您还可以将方括号替换为单词边界\b并使用re.search

import re
#...
df.apply(lambda x: bool(re.search(x['col1'].replace("[",r"\b").replace("]",r"\b"), x['col2'])), axis=1)
# => 0     True
#    1     True
#    2    False
#    3     True
#    dtype: bool
Run Code Online (Sandbox Code Playgroud)

这是可行的,因为\b7\bwill find a match in [0%, 7%]as7前面和后面都没有字母、数字或下划线。[30%, 7%]在as中不会找到任何匹配项,因为\b0\b与数字后面的零不匹配(此处为3)。