You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中基于关联ID筛选DataFrame行:解决merge仅返回单行问题

解决方案

你的需求是先定位df1中id2值存在于df2id1列的行,再提取df1中所有与这些行共享相同id1值的行。你之前用的左连接方法仅保留了id2匹配的单行,无法覆盖同id1的其他行,因此不符合需求。

正确实现逻辑

  1. 筛选df1中id2在df2id1范围内的行,提取这些行的id1并去重,得到需要保留的id1集合
  2. 用该集合筛选df1中所有对应id1的行

代码实现

import pandas as pd

# 构造示例数据
df1 = pd.DataFrame({
    'id1': ['C45', 'C45', 'C67', 'C78'],
    'id2': ['AB', 'ZO', 'RT', 'TZ'],
    'id3': ['ZU', 'RE', 'FG', 'GH']
})

df2 = pd.DataFrame({
    'id1': ['AB', 'GH', 'ZU']
})

# 获取目标id1集合
target_ids = df1[df1['id2'].isin(df2['id1'])]['id1'].unique()

# 筛选最终结果
result = df1[df1['id1'].isin(target_ids)]

print(result)

输出结果

id1 id2 id3
0  C45  AB  ZU
1  C45  ZO  RE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 20:55:23