基于Python读取多个excel竖向拼接为一个excel的实现方法

 更新时间:2025年09月16日 08:49:25   作者:袁袁袁袁满  
在Python中,可以使用pandas库结合glob模块来遍历读取多个Excel文件,并将它们竖向拼接为一个DataFrame对象,以下是完整的实现方法,需要的朋友可以参考下

在Python中,可以使用pandas库结合glob模块来遍历读取多个Excel文件,并将它们竖向拼接为一个DataFrame对象。以下是完整的实现方法:

方法1:使用glob匹配文件 + pd.concat()

import pandas as pd
import glob

# 1. 获取所有Excel文件路径(支持.xlsx和.xls)
excel_files = glob.glob('*.xlsx') + glob.glob('*.xls')  # 当前目录下所有Excel文件
# 或者指定路径:glob.glob('/path/to/files/*.xlsx')

# 2. 读取并拼接所有Excel文件
dfs = []
for file in excel_files:
    df = pd.read_excel(file)  # 可以添加参数如sheet_name='Sheet1'
    dfs.append(df)

# 3. 竖向拼接所有DataFrame
result = pd.concat(dfs, ignore_index=True)

# 4. 查看结果
print(result)

# 保存为一个xlsx
result.to_excel('汇总.xlsx')

方法2:使用列表推导式(更简洁)

import pandas as pd
import glob

# 读取并拼接所有Excel文件
result = pd.concat([
    pd.read_excel(f) for f in glob.glob('*.xlsx') + glob.glob('*.xls')
], ignore_index=True)

print(result)
# 保存为一个xlsx
result.to_excel('汇总.xlsx')

方法3:处理多个Sheet的情况

如果需要读取每个Excel文件的多个Sheet:

import pandas as pd
import glob

dfs = []
for file in glob.glob('*.xlsx'):
    # 获取所有Sheet名称
    sheets = pd.ExcelFile(file).sheet_names
    for sheet in sheets:
        df = pd.read_excel(file, sheet_name=sheet)
        dfs.append(df)

result = pd.concat(dfs, ignore_index=True)
# 保存为一个xlsx
result.to_excel('汇总.xlsx')

高级用法:添加文件来源列

如果需要知道每行数据来自哪个文件:

dfs = []
for file in glob.glob('*.xlsx'):
    df = pd.read_excel(file)
    df['source_file'] = file  # 添加来源文件列
    dfs.append(df)

result = pd.concat(dfs, ignore_index=True)
# 保存为一个xlsx
result.to_excel('汇总.xlsx')

注意事项

  1. 内存管理:如果文件很大或很多,建议分批处理或使用chunksize参数
  2. 列一致性:确保所有Excel文件的列结构相同,否则拼接后会出现很多NaN值
  3. 性能优化:对于大量文件,可以使用tqdm显示进度条:
from tqdm import tqdm
dfs = []
for file in tqdm(glob.glob('*.xlsx')):
    dfs.append(pd.read_excel(file))
result = pd.concat(dfs, ignore_index=True)
 # 保存为一个xlsx
 result.to_excel('汇总.xlsx')
  • 异常处理:添加try-except块处理损坏的文件
dfs = []
for file in glob.glob('*.xlsx'):
    try:
        dfs.append(pd.read_excel(file))
    except Exception as e:
        print(f"Error reading {file}: {str(e)}")

完整示例(推荐)

import pandas as pd
import glob

def read_and_concat_excels(pattern='*.xlsx', sheet_name=0, add_source=False):
    """
    读取并拼接多个Excel文件
    
    参数:
        pattern: 文件匹配模式 (如 'data/*.xlsx')
        sheet_name: 要读取的Sheet名称或索引
        add_source: 是否添加来源文件列
        
    返回:
        拼接后的DataFrame
    """
    dfs = []
    for file in glob.glob(pattern):
        try:
            df = pd.read_excel(file, sheet_name=sheet_name)
            if add_source:
                df['source_file'] = file
            dfs.append(df)
        except Exception as e:
            print(f"跳过文件 {file}: {str(e)}")
    
    if not dfs:
        raise ValueError("没有找到可读取的Excel文件")
    
    return pd.concat(dfs, ignore_index=True)

# 使用示例
combined_df = read_and_concat_excels(pattern='input_files/*.xlsx', add_source=True)
combined_df.to_excel('汇总.xlsx', index=False)

这种方法既健壮又灵活,可以处理大多数Excel文件拼接的场景。

到此这篇关于基于Python读取多个excel竖向拼接为一个excel的实现方法的文章就介绍到这了,更多相关Python读取多个excel拼接为一个内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python3.6中Twisted模块安装的问题与解决

    Python3.6中Twisted模块安装的问题与解决

    这篇文章主要介绍了Python3.6中Twisted模块安装的问题与解决,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • Python帮你微信头像任意添加装饰别再@微信官方了

    Python帮你微信头像任意添加装饰别再@微信官方了

    昨天朋友圈刷爆了@微信官方的梗,从起初的为头像添加国旗,到最后的各种Book思议的需求…而我呢?下面跟随小编一起学习Python帮你微信头像任意添加装饰别再@微信官方了,感兴趣的朋友一起看看吧
    2019-09-09
  • Python+PyQt5实现自动点击神器

    Python+PyQt5实现自动点击神器

    这篇文章主要为大家详细介绍了如何利用Python和PyQt5实现自动点击神器,旨在解决重复性的点击工作,解放双手,具有及时性和准确性,需要的可以参考下
    2024-01-01
  • 关于Pycharm无法debug问题的总结

    关于Pycharm无法debug问题的总结

    今天小编就为大家分享一篇关于Pycharm无法debug问题的总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python计算阶乘和的方法(1!+2!+3!+...+n!)

    python计算阶乘和的方法(1!+2!+3!+...+n!)

    今天小编就为大家分享一篇python计算阶乘和的方法(1!+2!+3!+...+n!),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 如何利用Pyecharts可视化微信好友

    如何利用Pyecharts可视化微信好友

    这篇文章主要给大家介绍了关于如何利用Pyecharts可视化微信好友的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Pyecharts具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • python中base64编码简介

    python中base64编码简介

    Base64是一种任意二进制到文本字符串的编码方法,常用于在URL、Cookie、网页中传输少量二进制数据,Base64是一种用64个字符来表示任意二进制数据的方法,这篇文章主要介绍了python中base64编码,需要的朋友可以参考下
    2022-12-12
  • 手把手教你如何使python变为可执行文件

    手把手教你如何使python变为可执行文件

    对于exe可执行文件,相信大家都不陌生,下面这篇文章主要给大家介绍了关于如何使python变为可执行文件的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • python+OpenCV人脸识别考勤系统实现的详细代码

    python+OpenCV人脸识别考勤系统实现的详细代码

    作为一个基于人脸识别算法的考勤系统的设计与实现教程,以下内容将提供详细的步骤和代码示例。本教程将使用 Python 语言和 OpenCV 库进行实现,需要的朋友可以参考下
    2023-05-05
  • Python如何在bool函数中取值

    Python如何在bool函数中取值

    这篇文章主要介绍了Python如何在bool函数中取值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09

最新评论