如何将3个Pandas DataFrame合并到主DataFrame并按Name列匹配值
Pandas多数据表按球员匹配合并实现方案
直接执行以下代码即可得到目标结果:
# 依次左连接三个统计数据表到主阵容表 # 联合Name、Team、Position三个字段作为匹配键,避免重名球员匹配错误 merged_df = nflLineups.merge(dfPass, on=['Name', 'Team', 'Position'], how='left')\ .merge(dfRun, on=['Name', 'Team', 'Position'], how='left')\ .merge(dfReceive, on=['Name', 'Team', 'Position'], how='left') # 若需要将空值替换为自定义的n/a,可执行下面的语句 merged_df = merged_df.fillna('n/a') # 查看输出结果 print(merged_df)
方案说明
- 采用
how='left'左连接逻辑,完全保留主表nflLineups的所有球员行,不会新增或丢失主表球员 - 用三个公共字段作为匹配键,避免仅用Name匹配可能出现的不同球队重名球员匹配错误的问题,同时不会生成带
_x/_y后缀的重复公共列 - 没有对应统计数据的球员自动填充空值,可按需替换为n/a格式
内容的提问来源于stack exchange,提问作者Able Archer
相关产品推荐
相关产品推荐

