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

 更新时间:2025年08月18日 10:26:58   作者:detayun  
在日常数据处理中,合并Excel文件是常见需求,Python提供了多种库(如pandas、openpyxl)来实现这一操作,本文将详细介绍两种主流方法,并附上完整代码示例,帮助您高效完成Excel合并任务,需要的朋友可以参考下

引言

在日常数据处理中,合并Excel文件是常见需求。Python提供了多种库(如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=True)

# 保存为新文件
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.read_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可循环读取多个文件:

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)

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

使用sheet_name参数:

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

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

使用dropna()去除空行:

combined_df.dropna(inplace=True)

总结

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

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

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

相关文章

  • 人脸检测实战终极之OpenCV+Python实现人脸对齐

    人脸检测实战终极之OpenCV+Python实现人脸对齐

    这篇文章主要是为了演示如何使用 OpenCV、Python 和面部标志从而实现对齐人脸。文中示例代码对我们的工作或学习有一定的帮助,感兴趣的小伙伴可以学习一下
    2021-12-12
  • django在保存图像的同时压缩图像示例代码详解

    django在保存图像的同时压缩图像示例代码详解

    这篇文章主要介绍了django在保存图像的同时压缩图像,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • 12步教你理解Python装饰器

    12步教你理解Python装饰器

    或许你已经用过装饰器,它的使用方式非常简单但理解起来困难(其实真正理解的也很简单),想要理解装饰器,你需要懂点函数式编程的概念,python函数的定义以及函数调用的语法规则等,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Python实现Linux命令xxd -i功能

    Python实现Linux命令xxd -i功能

    这篇文章主要介绍了Python实现Linux命令xxd -i功能的相关资料,需要的朋友可以参考下
    2016-03-03
  • Python Pytorch深度学习之神经网络

    Python Pytorch深度学习之神经网络

    今天小编就为大家分享一篇关于Pytorch神经网络的文章,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-10-10
  • python中isalpha () 和 isdigit ()的区别小结

    python中isalpha () 和 isdigit ()的区别小结

    本文主要介绍了python中isalpha () 和 isdigit ()的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-04-04
  • PyCharm自动化测试的实现

    PyCharm自动化测试的实现

    本文主要介绍了PyCharm自动化测试的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-04-04
  • Python递归实现打印多重列表代码

    Python递归实现打印多重列表代码

    今天小编就为大家分享一篇Python递归实现打印多重列表代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Python键鼠操作自动化库PyAutoGUI简介(小结)

    Python键鼠操作自动化库PyAutoGUI简介(小结)

    这篇文章主要介绍了Python键鼠操作自动化库PyAutoGUI简介,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • pyramid配置session的方法教程

    pyramid配置session的方法教程

    这篇文章主要介绍了pyramid如何配置session,大家可以参考使用
    2013-11-11

最新评论