You need to enable JavaScript to run this app. Python DataFrame唯一合并:筛选保留df1中Column1在df2存在的行
优惠活动
大模型
产品
解决方案
定价
更多

Python DataFrame唯一合并:筛选保留df1中Column1在df2存在的行

实现方案

筛选逻辑本质是保留df1与df2在Column1列上的键交集对应的行,可直接通过两类常用的pandas写法实现,无需复杂逻辑:

方法1:使用isin做匹配判断(最推荐)

这是这类列值交集筛选场景的标准写法,直观且性能稳定:

  • 通用写法,小数据量下直接使用即可:
    filtered_df1 = df1[df1['Column1'].isin(df2['Column1'])]
    
  • 大数据量下可做小优化:先把df2的Column1值转为集合,利用集合O(1)的查找特性提速,避免遍历Series带来的额外耗时
    # 转为集合减少查找耗时
    match_keys = set(df2['Column1'])
    filtered_df1 = df1[df1['Column1'].isin(match_keys)]
    

方法2:内连接实现

利用merge的内连接规则,自动匹配两边共有的键值行,注意不要直接拿完整df2去连接,不然会把df2的Column2/3/4全部带到结果里,破坏原df1的列结构,需要先只取df2的匹配列参与计算:

# 仅保留df2的匹配键列参与连接,保证结果和df1原有列结构完全一致
filtered_df1 = df1.merge(df2[['Column1']], on='Column1', how='inner')

两种方法执行后得到的结果完全符合预期:

Column1Column2
key_21100
key_31100

内容的提问来源于stack exchange,提问作者Tanai Goncalves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 22:15:00