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

如何使用Pandas合并列、行均存在差异的多个DataFrame

Pandas多DataFrame按公共字段合并解决方案

核心思路

  • 以Bridge_No、Location、Area三个公共字段作为连接主键
  • 采用外连接模式,保留三个表所有记录,缺失的年份字段值自动填充为NaN
  • 年份数值各自单独作为一列输出

完整实现代码

import pandas as pd
from functools import reduce

# 构造2011年数据
df_2011 = pd.DataFrame([
    [1, 'NY', 10, 3],
    [2, 'FL', 20, 4],
    [3, 'NJ', 15, 6]
], columns=['Bridge_No', 'Location', 'Area', '2011'])

# 构造2012年数据
df_2012 = pd.DataFrame([
    [2, 'FL', 20, 5],
    [3, 'NJ', 15, 3],
    [4, 'CN', 45, 9]
], columns=['Bridge_No', 'Location', 'Area', '2012'])

# 构造2013年数据
df_2013 = pd.DataFrame([
    [2, 'FL', 20, 8],
    [6, 'MI', 30, 8],
    [4, 'CN', 45, 9]
], columns=['Bridge_No', 'Location', 'Area', '2013'])

# 批量合并所有表,表数量多时也适用
dfs = [df_2011, df_2012, df_2013]
final_df = reduce(lambda left, right: pd.merge(left, right, on=['Bridge_No', 'Location', 'Area'], how='outer'), dfs)

# 打印验证结果
print(final_df)

输出结果说明

最终合并后的数据集格式如下,完全满足需求:

Bridge_NoLocationArea201120122013
1NY103.0NaNNaN
2FL204.05.08.0
3NJ156.03.0NaN
4CN45NaN9.09.0
6MI30NaNNaN8.0

内容的提问来源于stack exchange,提问作者Venkata Praveen Naradasu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 19:54:05