有没有办法检查字符串是不是存在于另一个数据框中?

Posted

技术标签:

【中文标题】有没有办法检查字符串是不是存在于另一个数据框中?【英文标题】:is there a method to check if string exist in another dataframe?有没有办法检查字符串是否存在于另一个数据框中? 【发布时间】:2022-01-21 00:00:52 【问题描述】:

我有一个数据框:

name ; id ; address
DR LUCAS FERNANDEZ ;  NEW YORK, AM ST543
JOHN FELLA MD ;  CANADA STREET 73663

我还有另一个数据框,例如:

firstname ; lastname ; city ; ID_K
LUCAS ; FERNANDEZ ; NEW YORK ; 987
JAMES ; BRON ; PARIS ; 7655

如果“名字”和“姓氏”(df2)在“名字”(df1)中并且城市(df2)在地址(df1)中,我想从第二个数据帧中获取ID_K

我想输出

name ; id ; address   ; searched_id
DR LUCAS FERNANDEZ ;  NEW YORK, AM ST543 ; 987

【问题讨论】:

【参考方案1】:

您可以使用merge 创建所有组合然后过滤行:

get_id = lambda x: x['firstname'] in x['name'] \
                   and x['lastname'] in x['name'] \
                   and x['city'] in x['address']

out = df1.merge(df2, how='cross')
out = out.loc[out.apply(get_id, axis=1), df1.columns.tolist() + ['ID_K']]

输出:

>>> out
                 name              address  ID_K
0  DR LUCAS FERNANDEZ   NEW YORK, AM ST543   987

设置:

df1 = pd.DataFrame('name': ['DR LUCAS FERNANDEZ', 'JOHN FELLA MD'],
                    'address': [' NEW YORK, AM ST543', ' CANADA STREET 73663']

df2 = pd.DataFrame('firstname': ['LUCAS', 'JAMES'],
                    'lastname': ['FERNANDEZ', 'BRON'],
                    'city': ['NEW YORK', 'PARIS'],
                    'ID_K': [987, 7655]

【讨论】:

谢谢,但我有一个错误 MergeError: No common columns to perform merge on。合并选项:left_on=None、right_on=None、left_index=False、right_index=False 我认为您忘记了how='cross' 参数,或者您的pandas 版本太旧,无法支持cross 方法。 如何更新熊猫? pip install -U pandas 用于 Python 环境,conda update pandas 用于 Anaconda 环境。您还应该拥有最新的 Python 版本。

以上是关于有没有办法检查字符串是不是存在于另一个数据框中?的主要内容,如果未能解决你的问题,请参考以下文章

检查日期是不是已存在于另一个时间段中

使用 lodash 检查数组是不是存在于另一个数组中

检查一个列表元素中的元素是不是存在于另一个列表中

检查 div 内容是不是已经存在于另一个 div 中?

SELECT EXISTS 检查行是不是存在于另一个表中

Hive:如何检查一个数组的值是不是存在于另一个数组中?