Python合并两个Excel文件的两种主流方法

Written by

in

文章目录
  • 在日常数据处理中,合并Excel文件是常见需求。Python提供了多种库(如pandas、openpyxl)来实现这一操作。本文将详细介绍两种主流方法,并附上完整代码示例,帮助您高效完成Excel合并任务。
  • 方法 适用场景 优点 缺点 pandas 快速合并、数据清洗、横向/纵向合并 代码简洁、支持大数据量 无法保留格式 openpyxl 保留Excel样式、操作工作表结构 格式完全保留 代码复杂、性能较低
  • 推荐方案: 数据清洗优先:选择pandas库,支持灵活的合并和清洗操作。 保留格式优先:使用openpyxl库,但仅适用于简单纵向合并。 通过本文的两种方法,您可以轻松实现Excel文件的合并,并根据具体需求选择最合适的工具。 到此这篇关于Python合并两个Excel文件的两种主流方法的文章就介绍到这了,更多相关Python合并Excel文件内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: 利用Python实现Excel文件智能合并工具 Python实现智能合并多个Excel Python自动化办公之合并多个Excel Python如何将两个Excel文件按相同字段合并到一起 使用Python合并 Excel单元格指定行列或单元格范围
  • 目录
    • 引言
    • 方法一:使用pandas库(推荐)
      • 简介
      • 安装
      • 场景1:纵向合并(追加数据)
        • 示例数据
        • 代码示例
        • 输出结果
      • 场景2:横向合并(按列拼接)
        • 示例数据
        • 代码示例
        • 输出结果
      • 注意事项
      • 方法二:使用openpyxl库(保留格式)
        • 简介
          • 安装
            • 代码示例(纵向合并)
              • 优势与局限
              • 方案对比
                • 常见问题解答
                  • 1. 如何合并多个Excel文件?
                    • 2. 合并时如何指定工作表?
                      • 3. 如何处理合并后的空值?
                      • 总结

                        在日常数据处理中,合并Excel文件是常见需求。Python提供了多种库(如pandasopenpyxl)来实现这一操作。本文将详细介绍两种主流方法,并附上完整代码示例,帮助您高效完成Excel合并任务。

                        pandas是Python中处理表格数据的核心库,支持快速读取、合并和保存Excel文件。适用于纵向合并(追加数据)横向合并(按列拼接)

                        pip install pandas openpyxl xlrd
                        

                        假设有两个Excel文件file1.xlsxfile2.xlsx,结构如下:

                        file1.xlsx

                        Name Age City
                        Alice 25 New York
                        Bob 30 London

                        file2.xlsx

                        Name Age City
                        Charlie 28 Paris
                        David 35 Berlin

                        import pandas as pd
                        
                        # 读取两个Excel文件
                        df1 = pd.read_excel('file1.xlsx')
                        df2 = pd.read_excel('file2.xlsx')
                        
                        # 纵向合并(按行追加)
                        combined_df = pd.concat([df1, df2], ignore_index=True)
                        
                        # 保存为新文件
                        combined_df.to_excel('combined.xlsx', index=False)
                        
                        print("纵向合并完成!")
                        

                        Name Age City
                        Alice 25 New York
                        Bob 30 London
                        Charlie 28 Paris
                        David 35 Berlin

                        假设file1.xlsx包含用户信息,file2.xlsx包含订单数据,需按用户ID合并:

                        file1.xlsx

                        UserID Name
                        1 Alice
                        2 Bob

                        file2.xlsx

                        UserID Order
                        1 Book
                        2 Laptop

                        import pandas as pd
                        
                        # 读取两个Excel文件
                        df1 = pd.read_excel('file1.xlsx')
                        df2 = pd.read_excel('file2.xlsx')
                        
                        # 按UserID列横向合并
                        merged_df = pd.merge(df1, df2, on='UserID', how='inner')
                        
                        # 保存为新文件
                        merged_df.to_excel('merged.xlsx', index=False)
                        
                        print("横向合并完成!")
                        

                        UserID Name Order
                        1 Alice Book
                        2 Bob Laptop

                        1. 列名一致性:纵向合并时,确保两个文件的列名完全一致(包括大小写和空格)。
                        2. 索引处理:使用ignore_index=True重置合并后的索引。
                        3. 去重操作:合并后可通过drop_duplicates()去除重复行。
                        4. 内存优化:处理大型文件时,可分块读取(chunksize参数)。

                        openpyxl可直接操作Excel文件,支持保留原始格式(如字体、颜色),但代码稍复杂。适用于需要保留样式的场景。

                        pip install openpyxl
                        

                        from openpyxl import Workbook, load_workbook
                        
                        # 加载第一个Excel文件
                        wb1 = load_workbook('file1.xlsx')
                        ws1 = wb1.active
                        
                        # 加载第二个Excel文件
                        wb2 = load_workbook('file2.xlsx')
                        ws2 = wb2.active
                        
                        # 创建新工作簿
                        new_wb = Workbook()
                        new_ws = new_wb.active
                        
                        # 复制第一个文件的所有行
                        for row in ws1.iter_rows(values_only=True):
                            new_ws.append(row)
                        
                        # 复制第二个文件的所有行(跳过标题行)
                        for row in ws2.iter_rows(min_row=2, values_only=True):
                            new_ws.append(row)
                        
                        # 保存新文件
                        new_wb.save('combined_openpyxl.xlsx')
                        
                        print("使用openpyxl合并完成!")
                        

                        • 优势:保留原始格式(如颜色、边框)。
                        • 局限:代码复杂度高,不支持横向合并。

                        方法 适用场景 优点 缺点
                        pandas 快速合并、数据清洗、横向/纵向合并 代码简洁、支持大数据量 无法保留格式
                        openpyxl 保留Excel样式、操作工作表结构 格式完全保留 代码复杂、性能较低

                        使用pandas可循环读取多个文件:

                        import pandas as pd
                        
                        all_dfs = []
                        for file in ['file1.xlsx', 'file2.xlsx', 'file3.xlsx']:
                            df = pd.read_excel(file)
                            all_dfs.append(df)
                        
                        combined = pd.concat(all_dfs, ignore_index=True)
                        

                        使用sheet_name参数:

                        df = pd.read_excel('file.xlsx', sheet_name='Sheet2')
                        

                        使用dropna()去除空行:

                        combined_df.dropna(inplace=True)
                        

                        • 推荐方案
                          • 数据清洗优先:选择pandas库,支持灵活的合并和清洗操作。
                          • 保留格式优先:使用openpyxl库,但仅适用于简单纵向合并。

                        通过本文的两种方法,您可以轻松实现Excel文件的合并,并根据具体需求选择最合适的工具。

                        到此这篇关于Python合并两个Excel文件的两种主流方法的文章就介绍到这了,更多相关Python合并Excel文件内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

                        您可能感兴趣的文章:

                        • 利用Python实现Excel文件智能合并工具
                        • Python实现智能合并多个Excel
                        • Python自动化办公之合并多个Excel
                        • Python如何将两个Excel文件按相同字段合并到一起
                        • 使用Python合并 Excel单元格指定行列或单元格范围

                        站内搜索