两列Python上的布尔搜索

2024-10-06 19:24:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧all_articles,其中列['title', 'astract']。 我编写了一个函数,用于对一列执行布尔搜索:

def searchString(string):
    if ((('apple' or 'banana') and ('fork' or 'knife') and ('red' or 'green'))) in string:
        return True
    return False

现在,我想创建一个包含true的列,如果titleabstract的组合满足布尔搜索的要求。例如,假设我的dataframe如下所示:

title                 abstract       
'apple'               'red fork'          
'orange'              'apple red fork'          
'knife banana red'    'green bowl'         

然后,我希望我的函数返回:['True','True','False']

我当前的apply命令如下所示:

all_articles['boolean'] = all_articles['Abstract'].astype(str).apply(searchString)

显然,我可以创建一个列,在其中合并titleabstract,并对该列应用函数。然而,我很好奇是否有办法通过一个包含两列输入的apply函数来实现这一点


Tags: orand函数abstracttrueapplestringtitle
1条回答
网友
1楼 · 发布于 2024-10-06 19:24:26

给定你的子句,结果应该是[False, True, True],这是你得到它的方式:

df.stack().str.contains('(?=.*(apple|banana))(?=.*(fork|knife))(?=.*(red|green))').unstack().any(1)

相关问题 更多 >