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

合并单列Excel文件时数据列错位,如何修复?

问题:合并单列Excel文件时出现列错位

尝试合并多个仅含单列数据的Excel文件,但合并后数据列错位,后续文件数据依次偏移到下一列。使用的Python代码如下:

import glob
import pandas as pd
file_path = "c:\merge-excel"
files = (file_path+"/*.xlsx")
all_files = glob.glob(files)
merged_data = pd.concat([pd.read_excel(a) for a in all_files])
merged_data.to_excel (file_path+"/Merged_files.xlsx", index=False, encoding='utf-8-sig')

文件示例:

  • file 1.xlsx内容:
1
2
3
4
5
6
7    
  • file 2.xlsx内容:
8
9
10
11
12
13
14
15
  • file 3.xlsx内容:
16
17
18
19
20
21
22
23

合并后异常结果:

1 | 8 | 16
2
3
4
5
6
7
   9
   10
   11
   12
   13
   14
   15
        17
        18
        19
        20
        21
        22
        23

修复方法

问题根源

pd.read_excel()默认会将Excel文件的第一行识别为表头(列名)。你的三个文件没有单独的表头行,第一行就是数据,导致每个文件被读取后生成了不同的列名(分别是1、8、16)。pd.concat()默认按列名对齐合并,最终就出现了多列错位的情况。

修正代码

读取Excel时指定header=None,强制将所有行作为数据内容,统一使用默认列名(0),这样合并时就会纵向拼接同一列:

import glob
import pandas as pd
file_path = r"c:\merge-excel"  # 添加r避免路径转义字符问题
files = file_path + "/*.xlsx"
all_files = glob.glob(files)
# 读取时指定header=None,确保第一行不是表头
merged_data = pd.concat([pd.read_excel(a, header=None) for a in all_files], ignore_index=True)
merged_data.to_excel(file_path + "/Merged_files.xlsx", index=False, encoding='utf-8-sig', header=False)

关键参数说明

  • header=None:告诉pandas不要将第一行作为表头,所有行都视为数据内容。
  • ignore_index=True:合并后重置索引,避免原文件的索引重复混乱。
  • header=False:导出时不添加默认列名(如0),保持纯数据的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 15:20:33