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