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')
两种方法执行后得到的结果完全符合预期:
| Column1 | Column2 |
|---|---|
| key_2 | 1100 |
| key_3 | 1100 |
内容的提问来源于stack exchange,提问作者Tanai Goncalves
相关产品推荐
相关产品推荐

