如何使用Python将多个Excel文件合并成一个单一文件?
Excel是最常用的数据分析和管理工具之一。通常,我们需要将多个Excel文件合并成一个单一文件,以便进行分析或与他人共享。手动合并这些文件可能非常耗时且容易出错,特别是在处理大型数据集时。幸运的是,Python提供了一种高效灵活的方式将多个Excel文件合并成一个单一文件。
在本文中,我们将学习如何使用Python合并多个Excel文件。我们将使用Pandas库,它是一个功能强大且易于使用的Python数据分析库,用于在Python中合并不同的Excel文件。
Python中的Pandas库是什么?
Pandas是一个用于处理数据集的Python库。它包含用于分析、清理、探索和操作数据的函数。除此之外,它还允许我们分析大数据,并基于统计理论得出结论。它还可以清理混乱的数据集,并使其可读和相关。
当使用Pandas合并Excel文件时,我们可以使用read_excel()函数将每个文件的数据读入Pandas DataFrame对象。一旦我们将所有数据放入单独的DataFrames中,我们可以使用Pandas的内置函数如merge()、join()和concat()将数据帧合并成一个单一的DataFrame。
Pandas的merge()函数提供了基于特定列合并数据帧的功能,类似于Excel中的VLOOKUP函数。我们可以指定要使用哪些列作为键来连接数据帧以及要执行的连接类型(内部连接、外部连接、左连接或右连接)。
将多个Excel文件合并成一个单一文件的步骤
步骤1:导入库
合并不同的Excel文件的第一步是导入所需的库。我们将使用Pandas来读取和合并Excel文件,使用OS来浏览文件系统。下面是导入这些库的代码:
import pandas as pd
import os
步骤2:识别要合并的文件
下一步是识别我们要合并的文件。我们可以指定确切的文件名,也可以使用模式匹配多个文件。在这个例子中,我们将使用后者的方法,即匹配特定目录中具有扩展名“.xlsx”的所有文件。以下是获取要合并的文件列表的代码:
path = "path/to/files/"
files = os.listdir(path)
files_xlsx = [f for f in files if f[-4:] == 'xlsx']
步骤3:读取你的Excel文件
在确定要合并的文件后,现在我们将把不同的Excel文件读入Pandas数据框中。我们可以使用循环将所有文件读入单独的数据框,然后将它们连接成一个单一的数据框。
输入的Excel文件如下:
#File1.xlsx
Product Quantity Price
Apple 10 0.5
Banana 5 0.25
#File2.xlsx
Product Quantity Price
Oranges 8 0.4
Grapes 12 0.3
#File3.xlsx
Product Quantity Price
Mango 15 0.6
Pineapple 7 0.8
以下是读取Excel文件的代码:
df_list = []
for f in files_xlsx:
data = pd.read_excel(os.path.join(path, f))
df_list.append(data)
df = pd.concat(df_list)
第四步:创建一个新的合并的Excel文件
合并文件的最后一步是将合并的数据框写入一个新的Excel文件。我们可以使用Pandas的to_excel方法来实现这个目的。以下是将合并的数据框写入新的Excel文件的代码:
output_path = "path/to/output_file.xlsx"
df.to_excel(output_path, index=False)
现在让我们来看一下使用不同方法如pd.concat和使用for循环将多个Excel文件合并为一个文件的完整示例。
示例1:使用‘pd.concat()’
在下面的示例中,我们首先导入所需的库并识别要合并的文件。然后,我们通过列出指定目录中以.xlsx结尾的所有文件来识别要合并的文件。接下来,我们将每个Excel文件读入一个数据框并将它们存储在一个名为df_list的列表中。
import pandas as pd
import os
# Identifying the files to merge
path = "yourpath/to/files/"
files = os.listdir(path)
files_xlsx = [f for f in files if f.endswith('.xlsx')]
# Reading the Excel files and concatenate them
mydf_list = [pd.read_excel(os.path.join(path, f)) for f in files_xlsx]
mydf = pd.concat(mydf_list)
# Writing the merged data frame to a new Excel file
myoutput_path = "path/to/myoutput_file.xlsx"
mydf.to_excel(myoutput_path, index=False)
输出
合并三个.xlsx文件后的最终输出:
Product Quantity Price
Apple 10 0.5
Banana 5 0.25
Orange 8 0.4
Grapes 12 0.3
Mango 15 0.6
Pineapple 7 0.8
示例2:使用for循环和pd.concat()
在下面的示例中,我们首先导入所需的库并确定要合并的文件,就像在第一个示例中一样。然后,我们初始化一个名为merged_df的空数据框。接下来,我们循环遍历每个Excel文件并将其读入数据框中。我们使用concat()函数将当前数据框与先前合并的数据框连接起来,并将结果存储在merged_df中。
import pandas as pd
import os
# Identifying the files to merge
path = "yourpath/to/files/"
files = os.listdir(path)
files_xlsx = [f for f in files if f.endswith('.xlsx')]
# Initialize an empty data frame
mymerged_df = pd.DataFrame()
# Reading the Excel files and concatenate them
for file in files_xlsx:
data = pd.read_excel(os.path.join(path, file))
mymerged_df = pd.concat([mymerged_df, data], ignore_index=True)
# Writing the merged data frame to a new Excel file
myoutput_path = "yourpath/to/myoutput_file.xlsx"
输出
合并三个.xlsx文件后的最终输出:
Product Quantity Price
Apple 10 0.5
Banana 5 0.25
Orange 8 0.4
Grapes 12 0.3
Mango 15 0.6
Pineapple 7 0.8
示例3: 使用pd.merge()
在下面的示例中,我们首先导入所需的库并标识要合并的文件,就像其他两个示例一样。现在,我们使用pd.read_excel()函数读取两个Excel文件,并使用pd.merge()函数基于我们用on参数指定的共同列合并两个数据帧。
import pandas as pd
# read in the first Excel file
mydf1 = pd.read_excel('myfile1.xlsx')
# read in the second Excel file
mydf2 = pd.read_excel('myfile2.xlsx')
# merge the two data frames based on a common column
mymerged_df = pd.merge(mydf1, mydf2, on='common_column')
# write the merged data frame to a new Excel file
mymerged_df.to_excel('mymerged_file.xlsx', index=False)
输出结果
合并三个 .xlsx 文件后的最终输出结果:
Product Quantity Price
Apple 10 0.5
Banana 5 0.25
Orange 8 0.4
Grapes 12 0.3
Mango 15 0.6
Pineapple 7 0.8
结论
使用Python将多个Excel文件合并成一个文件可以节省时间,并在处理大型数据集时减少错误。借助Pandas的帮助,这是一个简单的过程。在本文中,我们学习了如何通过遵循几个简单的步骤使用Python合并多个Excel文件。我们提供了两个示例,演示了如何使用concat()函数和循环合并多个Excel文件。总体而言,使用Python的灵活性和效率,合并多个Excel文件从未如此简单。