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

使用pandas与glob按每4个一组合并Excel生成P1-P305对应文件

Excel按点位拆分合并实现方案

提供两种可直接运行的实现方案,输出效果完全一致,可根据自己的场景选择。

方案1:按点位分组直接拼接源文件(推荐)

该方案无需先生成全量合并文件,直接根据文件名前缀将同一点位的4个文件归为一组,横向拼接后单独导出,不会出现列错位问题,大文件场景下内存占用更低。

import os
import glob
import pandas as pd
from collections import defaultdict

# 读取当前目录下所有xlsx格式文件
file_list = glob.glob("*.xlsx")
# 过滤掉可能已生成的结果文件,避免重复读取
file_list = [f for f in file_list if os.path.basename(f) != "Final.xlsx"]

# 按点位名分组存储文件
point_group = defaultdict(list)
for filename in file_list:
    # 从文件名提取点位标识,例:从P1-a.xlsx提取P1
    point_id = filename.split("-")[0]
    point_group[point_id].append(filename)

# 逐组拼接并导出
for point_id, group_files in point_group.items():
    df_container = []
    for file in group_files:
        print(f"读取文件:{file}")
        temp_df = pd.read_excel(file, header=None)
        df_container.append(temp_df)
    # 横向拼接逻辑和原全量合并代码完全一致
    merged_point_df = pd.concat(df_container, axis=1)
    merged_point_df.to_excel(f"{point_id}.xlsx", index=None)

方案2:基于已生成的Final_df按列拆分

如果已经完成全量文件合并生成了Final_df,可以直接按每4列为一组切分DataFrame后导出,无需重复读取所有源文件,运行速度更快。

import pandas as pd

# 读取已生成的全量合并表
final_df = pd.read_excel("Final.xlsx", header=None)
# 固定参数:共305个点位,每个点位对应4列数据
point_count = 305
col_per_point = 4

for idx in range(point_count):
    # 计算当前点位对应的列索引区间
    col_start = idx * col_per_point
    col_end = col_start + col_per_point
    # 切分对应列
    point_df = final_df.iloc[:, col_start:col_end]
    point_name = f"P{idx+1}"
    print(f"导出文件:{point_name}.xlsx")
    point_df.to_excel(f"{point_name}.xlsx", index=None)

注意事项

  • 方案2仅适用于原全量合并时文件读取顺序完全符合P1-a→P1-b→P1-c→P1-d→P2-a……→P305-d的场景,如果glob读取文件时顺序错乱,拆分结果会出现列错位
  • 如果无法确认原文件读取顺序,优先选择方案1,分组逻辑完全基于文件名,不会出现错位问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:36:27