Python 如果找到匹配项,如何比较dataframe中的两列并返回相应的记录?

Python 如果找到匹配项,如何比较dataframe中的两列并返回相应的记录?,python,dataframe,string-comparison,Python,Dataframe,String Comparison,我想匹配2个数据帧中的字符串,如果找到匹配,则返回相应的结果。因此,我的第一个数据帧包含: Name abc pqr xyz 第二个数据帧包含 Id Name 1 abc 2 lmn 3 pqr 4 qwe 我想通过比较(字符串)名称列来返回ID。此外,如果abc中的名称将与dataframe 2中的完整名称进行比较,那么如何实现相同的结果 在梳理了2个数据帧后,我尝试了以下代码: 这是一个比较字符串并返回差异的函数 def bit_func(x): dmp = diff_match

我想匹配2个数据帧中的字符串,如果找到匹配,则返回相应的结果。因此,我的第一个数据帧包含:

Name
abc
pqr
xyz
第二个数据帧包含

Id Name
1 abc
2 lmn
3 pqr
4 qwe
我想通过比较(字符串)名称列来返回ID。此外,如果abc中的名称将与dataframe 2中的完整名称进行比较,那么如何实现相同的结果

在梳理了2个数据帧后,我尝试了以下代码: 这是一个比较字符串并返回差异的函数

def bit_func(x):
    dmp = diff_match_patch()
    patches = dmp.patch_make(x.Name1, x.Name2)
    diff = dmp.patch_toText(patches)
    return diff
我试着去改变,但是代码不起作用。而我也希望相应的ID为名称,如何返回相同的

df['diff'] = df.apply(bit_func, axis=1)
您只需使用pandas功能来显示数据帧和与其关联的ID之间的匹配:

import pandas as pd

df1 = pd.DataFrame({'Name': ['abc', 'pqr', 'xyz']})
df2 = pd.DataFrame({'Name': ['abc', 'lmn', 'pqr', 'qwe'], 'Id': [1, 2, 3, 4]})

print(df1.merge(df2))
输出为:

Name  Id
0  abc   1
1  pqr   3
要获得两者之间的差异,请使用以下命令:

df1.merge(df2, how='outer', indicator=True).query('_merge != "both"').drop('_merge', 1)
哪些产出:

  Name   Id
2  xyz  NaN
3  lmn  2.0
4  qwe  4.0

对于所有合并查询,请参考此链接

谢谢您的回答,但这不是我想要的。我正在使用函数,因此如何通过将其传递给函数来实现同样的功能是值得关注的。我已经更新了代码。所以你想返回两个数据帧之间的差异吗?