如何比较数据帧中的两列并返回相应的记录,如果找到匹配?

问题描述 投票:-1回答:1

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

Name
abc
pqr
xyz

第二个数据帧包含

Id Name
1 abc
2 lmn
3 pqr
4 qwe

我想通过比较(字符串)名称列来返回ID。另外,如果实现相同的,如果来自abc的Name将与来自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)
python dataframe string-comparison
1个回答
1
投票

你可以使用pandas merge功能来显示DataFrames和与它们相关的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

对所有合并查询引用此post

© www.soinside.com 2019 - 2024. All rights reserved.