Python 如果找到匹配项,如何比较dataframe中的两列并返回相应的记录?
我想匹配2个数据帧中的字符串,如果找到匹配,则返回相应的结果。因此,我的第一个数据帧包含: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
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
对于所有合并查询,请参考此链接谢谢您的回答,但这不是我想要的。我正在使用函数,因此如何通过将其传递给函数来实现同样的功能是值得关注的。我已经更新了代码。所以你想返回两个数据帧之间的差异吗?