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

Python实现不同列名Excel按行追加(非列合并)问题求解

问题核心原因

  • pandas的concat方法按行拼接时默认会按列名自动对齐,不同文件的列名不一致时就会合并所有列,缺失位置填充NaN,就是你遇到的自动合列问题
  • read_excel默认将文件第一行识别为列名,不会作为数据读取,若需要保留每个文件的表头作为内容追加,需要额外调整读取参数
  • 原有代码最后保存时使用的ticker是循环最后一次的取值,只会保存为最后一个股票代码命名的文件,不符合多文件汇总的需求

修复后代码

import pandas as pd

tickers = ['2crsi','abeo']
df_total = pd.DataFrame()

for ticker in tickers:
    # 遍历四个文件夹的对应文件
    for dir_name in ['./balance/pea/', './keyratio/pea/', './history/pea/', './cashflow/pea/']:
        df2 = pd.read_excel(f"{dir_name}{ticker}.xls", header=None)  # 不识别表头,原表头会被读为第0行数据
        # 若不需要保留每个文件的原有表头,解开下面这行的注释即可
        # df2 = df2.iloc[1:].reset_index(drop=True)
        # 统一列名为数字,避免拼接时按原列名对齐
        df2.columns = range(df2.shape[1])
        df_total = pd.concat([df_total, df2], ignore_index=True)

# 保存总表,不需要输出表头和行索引就保留后面两个参数
df_total.to_excel('all_merged.xls', header=False, index=False)

说明

默认代码会保留每个Excel的原有表头作为普通行追加,如果不需要保留表头,解开代码中注释标注的那行即可,拼接效果就是所有文件的数据行直接按顺序追加,不会合并不同名称的列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:06:08