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

Pandas如何基于索引值合并多个动态长度DataFrame为单个df

按索引对齐合并多个动态长度DataFrame实现方法

问题原因

直接调用pd.concat(list_of_dfs)出现索引堆叠错位,是因为concat默认参数axis=0为纵向按行堆叠,不会按索引横向对齐列;使用join无返回列/丢行,通常是未指定连接类型、调用方式错误导致。

方案1:使用pd.concat(最推荐,兼容任意长度df列表)

拼接时指定横向拼接轴axis=1,默认采用外连接逻辑,自动保留所有唯一索引、缺失位置填充NaN,完全匹配需求:

import pandas as pd

# 构造测试样例
df1 = pd.DataFrame({'x': [2, 3, 4]}, index=[0, 1, 2])
df2 = pd.DataFrame({'y': [1, 2, 2, 3]}, index=[0, 2, 3, 4])
list_of_dfs = [df1, df2] # 可放入任意数量、长度动态变化的df

# 核心合并代码
df_merged = pd.concat(list_of_dfs, axis=1)

执行后输出结果和预期完全一致:

索引xy
02.01.0
13.0NaN
24.02.0
3NaN2.0
4NaN3.0

方案2:使用DataFrame.join实现

如果习惯用join方法,需要指定连接方式为外连接how='outer',从列表第一个df开始拼接剩余所有df即可,同样兼容动态长度列表:

df_merged = list_of_dfs[0].join(list_of_dfs[1:], how='outer')

注意事项

  • 如果待合并的多个df存在重复列名,可传入suffixes参数给重复列加区分后缀,避免列覆盖
  • 两种方法默认对匹配不到的位置填充NaN,不需要额外设置缺失值填充逻辑
  • 列表内df数量动态增减时不需要修改合并代码,直接更新list_of_dfs内容即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 13:57:11