下面是我的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)
您还可以将方括号替换为单词边界\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\b
will find a match in [0%, 7%]
as7
前面和后面都没有字母、数字或下划线。[30%, 7%]
在as中不会找到任何匹配项,因为\b0\b
与数字后面的零不匹配(此处为3
)。
归档时间: |
|
查看次数: |
349 次 |
最近记录: |