Python中基于关联ID筛选DataFrame行:解决merge仅返回单行问题
解决方案
你的需求是先定位df1中id2值存在于df2id1列的行,再提取df1中所有与这些行共享相同id1值的行。你之前用的左连接方法仅保留了id2匹配的单行,无法覆盖同id1的其他行,因此不符合需求。
正确实现逻辑
- 筛选df1中
id2在df2id1范围内的行,提取这些行的id1并去重,得到需要保留的id1集合 - 用该集合筛选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
相关产品推荐
相关产品推荐

