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

Pandas导入Excel列数据顺序错误问题求助

排查与解决方案

核心问题推测

你遇到的每第4个工作表列顺序错乱的问题,大概率是复用同一个Excel读取对象导致的状态残留,或是Pandas对列范围M:AD的解析在不同工作表中因格式/隐藏列等因素出现偏差。

具体排查与修复步骤

1. 避免复用ExcelFile对象

如果你的xls是提前创建的pd.ExcelFile实例,循环读取时可能会残留之前的解析状态。改成每次读取时重新打开文件:

df1 = []
for s in main:
    # 若xls是文件路径,直接传入路径即可;若已是ExcelFile,改用文件路径重新打开
    with pd.ExcelFile(xls) as xls_file:
        df = pd.read_excel(xls_file, sheet_name=s, skiprows=4, nrows=32, usecols='M:AD')
    df1.append(df)

2. 用明确列名替代列范围

usecols='M:AD'的解析依赖Excel的列结构,若个别工作表有隐藏列、格式异常,会导致列顺序混乱。先从正常工作表提取目标列名,再统一用列名读取:

# 先从第一个正常工作表获取标准列名
with pd.ExcelFile(xls) as xls_file:
    sample_df = pd.read_excel(xls_file, sheet_name=main[0], skiprows=4, nrows=1, usecols='M:AD')
    target_cols = sample_df.columns.tolist()

# 用标准列名读取所有工作表
df1 = []
for s in main:
    with pd.ExcelFile(xls) as xls_file:
        df = pd.read_excel(xls_file, sheet_name=s, skiprows=4, nrows=32, usecols=target_cols)
    df1.append(df)

3. 合并前强制统一列顺序

即使个别工作表读取后列顺序错乱,合并前统一调整为标准顺序:

df1 = [pd.read_excel(xls, sheet_name=s, skiprows=4, nrows=32, usecols='M:AD') for s in main]
# 以第一个工作表的列顺序为标准
standard_cols = df1[0].columns.tolist()
# 调整所有DataFrame的列顺序
df1 = [df.reindex(columns=standard_cols) for df in df1]

dfconcat = pd.concat(df1, ignore_index=True, sort=False)
dfconcat.dropna(axis=0, how='all', inplace=True)

4. 检查Excel文件本身

  • 确认异常工作表的M:AD范围内无隐藏列,隐藏列会干扰Pandas的列范围解析
  • 检查所有工作表的对应列是否有格式差异(比如文本/数值类型不一致)
  • 再次核实无合并单元格(包括隐形合并,可通过Excel的「开始→查找和选择→定位条件→合并单元格」检查)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 18:20:48