如何使用Python将多个Excel文件合并到一个文件中?


Excel是数据分析和管理最流行的工具之一。通常,我们需要将多个Excel文件合并到一个文件中进行分析或与他人共享。手动合并这些文件可能非常耗时且容易出错,尤其是在处理大型数据集时。幸运的是,Python提供了一种高效且灵活的方法来将多个Excel文件合并到一个文件中。

在本文中,我们将学习如何使用Python合并多个Excel文件。我们将使用Pandas库,这是一个功能强大且易于使用的Python数据分析库,用于合并不同的Excel文件。

什么是Python中的Pandas库?

Pandas是一个用于处理数据集的Python库。它包含用于分析、清理、探索和操作数据的函数。除此之外,它还允许我们分析大数据并根据统计理论得出结论。它还可以清理杂乱的数据集,使它们更易读和更相关。

使用Pandas合并Excel文件时,我们可以使用read_excel()函数将每个文件中的数据读取到Pandas DataFrame对象中。一旦我们将所有数据都放在单独的DataFrame中,我们就可以使用Pandas的内置函数,如merge()、join()和concat(),将这些DataFrame组合成一个DataFrame。

Pandas的merge()函数提供了基于特定列合并DataFrame的能力,类似于Excel中的VLOOKUP函数。我们可以指定哪些列用作连接DataFrame的键以及要执行的连接类型(内连接、外连接、左连接或右连接)。

将多个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)

步骤4:创建一个新的合并的Excel文件

合并文件的最后一步是将合并的数据框写入一个新的Excel文件。我们可以使用Pandas的to_excel方法来做到这一点。以下是将合并的数据框写入新的Excel文件的代码

output_path = "path/to/output_file.xlsx"
df.to_excel(output_path, index=False)

现在让我们看看使用不同的方法(如pd.concat和使用for循环)在Python中将多个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文件从未如此简单。

更新于:2023年8月31日

10K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.