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

基于ID分组匹配两个DataFrame并映射Region字段的高效实现方法

解决方案

你需要的匹配逻辑本质是用ID+Name两个字段作为联合唯一键做关联匹配,不需要手动分组拆分再合并,直接用pandas内置的merge方法即可,该方法是矢量化实现,处理10万条数据效率远高于手动分组操作。

import pandas as pd

# 你的原始数据
df = pd.DataFrame({"ID":[111,111,111,222,222,333,333],
                   "Name":['aaa','xxx','yyy','bbb','xxx','ccc','yyy']})

region = pd.DataFrame({"ID":[111,222,333,111,222,111],
                       "Name":['aaa','bbb','yyy','xxx','yyy','yyy'],
                       "Region": ['west','north','east','west','north','south']})

# 可选操作:如果region表存在同ID同Name对应多条Region的情况,先按ID+Name去重
# keep参数可根据需求调整:first保留第一条、last保留最后一条
region_unique = region.drop_duplicates(subset=['ID', 'Name'], keep='last')

# 左连接匹配,保留df的所有行,匹配到的补上Region字段
result = pd.merge(df, region_unique, on=['ID', 'Name'], how='left')

运行后得到的result输出如下:

ID Name Region
0  111  aaa   west
1  111  xxx   west
2  111  yyy  south
3  222  bbb  north
4  222  xxx    NaN
5  333  ccc    NaN
6  333  yyy   east

该结果完全符合你按ID分组匹配的预期,对于df里存在但region里没有的ID+Name组合,Region字段会返回空值,可后续根据需要填充默认值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:15:03