Python 如果列包含字符串,则写入第二个数据帧

Python 如果列包含字符串,则写入第二个数据帧,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧。我希望能够从DF2中搜索列(snippet_matched),查看它是否与DF1中的列(search)中的任何内容有部分匹配。如果它确实包含它,那么我想在DF1列(HR)中写“是”。这样的事情可能吗 df1 df2 期望 Number Search HRC 1 1 test game Yes 2 2 test game Yes 3 3 test game Yes 您可以为部分匹配创建一个函数,并将其应用于d

我有两个数据帧。我希望能够从DF2中搜索列(snippet_matched),查看它是否与DF1中的列(search)中的任何内容有部分匹配。如果它确实包含它,那么我想在DF1列(HR)中写“是”。这样的事情可能吗

df1

df2

期望

Number    Search       HRC
 1       1 test game   Yes
 2       2 test game   Yes
 3       3 test game   Yes

您可以为部分匹配创建一个函数,并将其应用于df1['Search']列。见下文:

def match(cell, column):
    column=[set(i.split()) for i in column]
    cell=set(cell.split())
    return 'Yes' if any(k-cell==set() for k in column) else 'No'

df1['HR']=df1['Search'].apply(lambda x: match(x, df2['Snipped_Match']))
结果:

>>> print(df1)

   Number       Search   HR
0       1  1 test game  Yes
1       2  2 test game   No
2       3  3 test game   No

刚刚用False?代码更新填充了HRC列,请重试。您是否可以确认希望df1['Search']的项目包含在df2['snippet_matched']中,在这种情况下,df1['HR']的相应行将填充“是”,否则为“否”?刚刚更新。我需要一些饮料。因此,如果df2['Snippet\u matched']在df1['Search']中包含某些内容,那么YesThank将进行更新。请在您的问题下方查看我的评论。这是一个部分匹配你能澄清一下“包含”是什么意思吗?你是指完全匹配还是部分匹配?请更严格地定义它。部分匹配已更新。错过了那一点对不起
def match(cell, column):
    column=[set(i.split()) for i in column]
    cell=set(cell.split())
    return 'Yes' if any(k-cell==set() for k in column) else 'No'

df1['HR']=df1['Search'].apply(lambda x: match(x, df2['Snipped_Match']))
>>> print(df1)

   Number       Search   HR
0       1  1 test game  Yes
1       2  2 test game   No
2       3  3 test game   No