【问题标题】: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

【问题讨论】:

    标签: python python-3.x pandas dataframe pandas-groupby


    【解决方案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 版本。
    猜你喜欢
    • 2016-03-04
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多