Python将文件夹中多个Excel表格合并在一起,纵向合并
引言
在日常工作和数据分析中,我们经常会遇到需要合并多个Excel表格的情况。Python作为一种强大的编程语言,可以提供简单而有效的解决方案。
在本文中,我们将介绍如何使用Python合并文件夹中多个Excel表格,并将它们纵向合并为一个表格。
准备工作
在开始之前,我们需要安装以下Python库:
- pandas:用于处理和操作数据的库
- os:用于访问文件和文件夹的库
可以使用以下命令来安装这些库:
pip install pandas
pip install openpyxl
同时,你还需要准备一个包含多个Excel表格的文件夹。每个Excel表格应该具有相同的列名和数据类型,以便可以正确地进行合并。
流程图
flowchart TD;
A[开始]-->B[指定文件夹路径];
B-->C[读取文件夹中的所有Excel文件];
C-->D[创建一个空的DataFrame];
D-->E[循环遍历每个Excel文件];
E-->F[读取当前Excel文件的所有数据];
F-->G[将数据添加到DataFrame中];
G-->H[保存合并后的结果为一个新的Excel文件];
H-->I[结束];
代码示例
下面是一个完整的代码示例,演示了如何将文件夹中的多个Excel表格合并为一个表格。
import os
import pandas as pd
# 指定文件夹路径
folder_path = "path/to/folder"
# 读取文件夹中的所有Excel文件
excel_files = [file for file in os.listdir(folder_path) if file.endswith(".xlsx")]
# 创建一个空的DataFrame
merged_data = pd.DataFrame()
# 循环遍历每个Excel文件
for file in excel_files:
# 读取当前Excel文件的所有数据
file_path = os.path.join(folder_path, file)
data = pd.read_excel(file_path)
# 将数据添加到DataFrame中
merged_data = merged_data.append(data, ignore_index=True)
# 保存合并后的结果为一个新的Excel文件
output_file = "merged_data.xlsx"
merged_data.to_excel(output_file, index=False)
print("合并完成!结果保存为 %s" % output_file)
代码解析
以下是上述代码示例的详细解析:
- 导入所需的库:
import os
import pandas as pd
- 指定文件夹路径:
folder_path = "path/to/folder"
将 folder_path
替换为你的文件夹路径。
- 读取文件夹中的所有Excel文件:
excel_files = [file for file in os.listdir(folder_path) if file.endswith(".xlsx")]
使用列表推导式遍历文件夹中的所有文件,并筛选出以 .xlsx
结尾的Excel文件。
- 创建一个空的DataFrame:
merged_data = pd.DataFrame()
使用 pd.DataFrame()
创建一个空的DataFrame,用于存储合并后的数据。
- 循环遍历每个Excel文件:
for file in excel_files:
使用 for
循环遍历每个Excel文件。
- 读取当前Excel文件的所有数据:
file_path = os.path.join(folder_path, file)
data = pd.read_excel(file_path)
使用 os.path.join()
将当前文件的路径与文件夹路径拼接起来,然后使用 pd.read_excel()
读取Excel文件的数据。
- 将数据添加到DataFrame中:
merged_data = merged_data.append(data, ignore_index=True)
使用 append()
方法将当前Excel文件的数据添加到空的DataFrame中。ignore_index=True
参数可以重新生成索引,确保所有数据按顺序添加。
- 保存合并后的结果为一个新的Excel文件:
output_file = "merged_data.xlsx"
merged_data.to_excel(output_file, index=False)
使用 to_excel()
方法将合并后的数据保存为一个新的Excel文件。index=False
参数可以去除索引列。
- 完成:
print("合并完成!结果保存为 %s" % output_file)
打印合并完成的