如何排查pandas merge中导致数据缺失的复合主键
复合键关联与缺失行原因排查
源表与目标表
源表(Source)
| ID1 | ID2 | Value |
|---|---|---|
| ABC | 123 | 100 |
| ABC | 345 | 200 |
| DEF | 789 | 300 |
目标表(Target)
| ID1 | ID2 | Value |
|---|---|---|
| ABC | 123 | 100 |
| ABC | 222 | 200 |
| DEF | 789 | 300 |
我们通过pandas的merge方法,使用复合键ID1和ID2关联两张表。现有数据分析测试工具会执行该merge操作,并将两侧未匹配成功的行分别筛选到**Missing in Target(目标表缺失)和Missing in Source(源表缺失)**结果表中。
缺失行结果表
目标表缺失(Missing in Target)
| ID1 | ID2 | Value |
|---|---|---|
| ABC | 345 | 200 |
源表缺失(Missing in Source)
| ID1 | ID2 | Value |
|---|---|---|
| ABC | 222 | 200 |
缺失情况说明
- 源表中复合键为
ABC,345的行在目标表中无匹配项,因此被归入Missing in Target表 - 目标表中复合键为
ABC,222的行在源表中无匹配项,因此被归入Missing in Source表
业务方需要明确这些缺失表中每行匹配失败的具体原因——即复合键中的哪一个字段是导致匹配失败的关键因素。例如Missing in Target表中的ABC,345行:ABC在两张表中均存在,但345仅在源表出现,因此ID2=345是该行缺失的核心原因。
注:使用的pandas版本为0.23。
内容的提问来源于stack exchange,提问作者GaryChin
相关产品推荐
相关产品推荐

