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

如何按指定格式拼接Pandas中的DataFrame列表?

按规则拼接多个DataFrame

问题描述

现有一个包含3个DataFrame的列表df_list,内容如下:

[0  1  2  3
0  X  X  0  0
1  X  X  X  X,
   0  1  2  3
0  X  X  X  X
1  0  0  X  X,
   0  1  2  3
0  X  X  X  X]

需要将这些DataFrame按规则拼接成一个12列、5行的DataFrame:每个原DataFrame依次占据目标Data的对应行区域,其余位置填充0,最终效果如下:

0   1   2   3   4   5   6   7   8   9   10  11
0   X   X   0   0   0   0   0   0   0   0   0   0
1   X   X   X   X   0   0   0   0   0   0   0   0
2   0   0   0   0   X   X   X   X   0   0   0   0
3   0   0   0   0   0   0   X   X   0   0   0   0
4   0   0   0   0   0   0   0   0   X   X   X   X

解决方案

通过预先创建目标结构的空DataFrame,再逐个将原DataFrame的值填充到对应位置即可实现,具体步骤如下:

1. 构造示例df_list(已有真实数据可跳过)

import pandas as pd

# 构造第一个DataFrame
df1 = pd.DataFrame([['X', 'X', '0', '0'], ['X', 'X', 'X', 'X']], columns=[0,1,2,3])
# 构造第二个DataFrame
df2 = pd.DataFrame([['X', 'X', 'X', 'X'], ['0', '0', 'X', 'X']], columns=[0,1,2,3])
# 构造第三个DataFrame
df3 = pd.DataFrame([['X', 'X', 'X', 'X']], columns=[0,1,2,3])

df_list = [df1, df2, df3]

2. 计算目标DataFrame的维度

# 总列数:单个DataFrame列数 * DataFrame数量
total_cols = df_list[0].shape[1] * len(df_list)
# 总行数:所有DataFrame行数之和
total_rows = sum(df.shape[0] for df in df_list)

3. 创建填充默认值的目标DataFrame

# 用'0'填充所有位置,行/列索引从0开始连续编号
result_df = pd.DataFrame('0', index=range(total_rows), columns=range(total_cols))

4. 逐个填充原DataFrame到对应区域

current_row = 0  # 记录当前填充的起始行位置
for idx, df in enumerate(df_list):
    col_start = idx * df.shape[1]  # 当前DataFrame的列起始位置
    col_end = col_start + df.shape[1]
    row_end = current_row + df.shape[0]
    
    # 将当前df的值赋值到目标区域
    result_df.loc[current_row:row_end-1, col_start:col_end-1] = df.values
    
    # 更新下一个DataFrame的起始行位置
    current_row = row_end

5. 查看结果

执行代码后打印result_df即可得到目标格式:

print(result_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:12:24