开发者

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

开发者 https://www.devze.com 2025-08-19 09:25 出处:网络 作者: detayun
目录引言方法一:使用pandas库(推荐)简介安装场景1:纵向合并(追加数据)示例数据代码示例输出结果场景2:横向合并(按列拼接)示例数据代码示例输出结果注意事项方法二:使用openpyxl库(保留格式)简介安装代码
目录
  • 引言
  • 方法一:使用pandas库(推荐)
    • 简介
    • 安装
    • 场景1:纵向合并(追加数据)
      • 示例数据
      • 代码示例
      • 输出结果
    • 场景2:横向合并(按列拼接)
      • 示例数据
      • 代码示例
      • 输出结果
    • 注意事项
    • 方法二:使用openpyxl库(保留格式)
      • 简介
        • 安装
          • 代码示例(纵向合并)
            • 优势与局限
            • 方案对比
              • 常见问题解答
                • 1. 如何合并多个Excel文件?
                  • 2. 合并时如何指定工作表?
                    • 3. 如何处理合并后的空值?
                    • 总结

                      引言

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

                      方法一:使用pandas库(推荐)

                      简介

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

                      安装

                      pip install pandas openpyxl xlrd
                      

                      场景1:纵向合并(追加数据)

                      示例数据

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

                      file1.xlsx

                      NameAgeCity
                      Alice25New York
                      Bob30London

                      file2.xlsx

                      NameAgeCity
                      Charlie28Paris
                      David35Berlin

                      代码示例

                      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=Trhttp://www.devze.comue)
                      
                      # 保存为新文件
                      combined_df.to_excel('combined.xlsx', index=False)
                      
                      print("纵向合并完成!")
                      

                      输出结果

                      NameAgeCity
                      Alice25New York
                      Bob30London
                      Charlie28Paris
                      David35Berlin

                      场景2:横向合并(按列拼接)

                      示例数据

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

                      file1.xlsx

                      UserIDName
                      1Alice
                      2Bob

                      file2.xlsx

                      UserIDOrder
                      1Book
                      2Laptop

                      代码示例

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

                      输出结果

                      UserIDNameOrder
                      1AliceBook
                      2BobLaptop

                      注意事项

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

                      方法二:使用openpyxl库(保留格式)

                      简介

                      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样式、操作工作表结构格式完全保留代码复杂、性能较低

                      常见问题解答

                      1. 如何合并多个Excel文件?

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

                      impor编程客栈t 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)
                      

                      2. 合并时如何指定工作表?

                      使用sheet_name参数:

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

                      3. 如何处理合并后的空值?

                      使用dropna()去除空行:

                      combined_df.dropna(inplace=Tandroidrue)
                      

                      总结

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

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

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

                      0

                      精彩评论

                      暂无评论...
                      验证码 换一张
                      取 消

                      关注公众号