Pandas两表匹配:筛选左表中地址存在于右表的全部数据行
实现方案
方案1:isin 直接筛选(性能最优,适合仅筛选的场景)
核心逻辑是先提取df2中所有目标地址,再过滤df1中地址匹配的行,代码如下:
# 提取df2中所有需要匹配的地址,先去重提升匹配效率 target_address_list = df2['Other Addresses'].unique() # 筛选df1中Address在目标地址列表内的行,重置索引和示例输出保持一致 result = df1[df1['Address'].isin(target_address_list)].reset_index(drop=True)
如果不需要重置结果的索引,去掉.reset_index(drop=True)即可。
方案2:merge 内连接实现(适合需要关联df2其他字段的场景)
如果后续还需要用到df2里的其他字段,用内连接的方式更方便,代码如下:
result = pd.merge( df1, df2, left_on = 'Address', right_on = 'Other Addresses', how = 'inner' )[df1.columns.tolist()].reset_index(drop=True) # 末尾的[df1.columns.tolist()]是为了仅保留df1的全部字段,符合需求
内容的提问来源于stack exchange,提问作者Luiz Scheuer
相关产品推荐
相关产品推荐

