如果发现匹配,如何比较数据框的两列并返回相应的记录?

时间:2019-04-26 06:28:40

标签: python dataframe string-comparison

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

Name
abc
pqr
xyz

第二个数据框包含

Id Name
1 abc
2 lmn
3 pqr
4 qwe

我想通过比较(字符串)名称列来返回ID。此外,如果将abc中的名称与数据框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)

1 个答案:

答案 0 :(得分:1)

您可以只使用pandas merge功能来显示DataFrame和与其关联的ID之间的匹配项:

this.service.postFunction1(body1).subscribe(
  res=>{
    this.service.postFunction2(body2).subscribe(
     res=>{},
     err=>{}
    )
  },
  err=>{
    /** Stuff here... **/   //Should I stop here the whole thing here?
  })
)

输出为:

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)

所有合并查询的参考post