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

Pandas左连接合并DataFrame后行数增加问题排查

左连接后DataFrame行数增加的原因及解决办法

核心原因

左连接后行数从570变为681,本质是DF2中存在重复的['em casa', 'visitante', 'temporada']键组合。

当DF1的某一行在DF2中匹配到多个相同的键组合时,pandas会为每个匹配生成一行新数据,导致总行数膨胀。比如DF1中1行对应DF2中2行匹配,就会被拆分为2行,累计后总行数自然增加。

验证方法

先确认DF2的键组合是否存在重复:

# 检查是否存在重复的键组合
print(DF2.duplicated(subset=['em casa', 'visitante', 'temporada']).any())

# 查看重复次数最多的键组合详情
duplicate_counts = DF2.groupby(['em casa', 'visitante', 'temporada']).size().sort_values(ascending=False)
print(duplicate_counts.head(10))

如果输出True,说明重复的键组合确实是行数增加的直接原因。

解决办法

根据重复的具体原因,对应处理:

1. DF2存在冗余重复数据

如果DF2中的重复行是爬取错误导致的冗余数据,先对DF2去重后再合并:

# 保留每个键组合的第一行,删除其他重复行
DF2_clean = DF2.drop_duplicates(subset=['em casa', 'visitante', 'temporada'], keep='first')
# 执行左连接
DF1_merged = DF1.merge(DF2_clean, on=['em casa', 'visitante', 'temporada'], how='left')

2. 键组合不足以唯一标识单场比赛

同一个赛季中,两队可能会踢2场(主客场各一场),仅用主队、客队、赛季无法区分两场比赛,导致DF2中同一键组合对应两场不同比赛的数据,合并时产生错误匹配。

这种情况需要补充唯一标识单场比赛的列作为合并键,比如比赛日期(data)或轮次(sem):

# 加入data作为额外合并键,确保匹配同一场比赛
DF1_merged = DF1.merge(DF2, on=['em casa', 'visitante', 'temporada', 'data'], how='left')

后续处理:填充缺失值

合并后会出现类似home_cruzamentos_x(原DF1列)和home_cruzamentos_y(DF2列)的重复列,需要用DF2的数据填充DF1的NaN,然后清理冗余列:

# 列出所有需要填充的列名
cols_to_fill = ['home_cruzamentos', 'away_cruzamentos', 'home_bote defensivo', 'away_bote defensivo', 
                'home_cortes', 'away_cortes', 'home_jogadas aéreas', 'away_jogadas aéreas',
                'home_defesas', 'away_defesas', 'home_bolas longas', 'away_bolas longas',
                'home_acerto_de_passes', 'away_acerto_de_passes']

for col in cols_to_fill:
    DF1_merged[col] = DF1_merged[f'{col}_x'].fillna(DF1_merged[f'{col}_y'])
    # 删除冗余的_x和_y列
    DF1_merged.drop([f'{col}_x', f'{col}_y'], axis=1, inplace=True)

或者用更简洁的combine_first方法:

# 对齐索引后直接合并填充
DF1_filled = DF1.set_index(['em casa', 'visitante', 'temporada']).combine_first(DF2.set_index(['em casa', 'visitante', 'temporada'])).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:48:19