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

pythonserver side programmingprogramming

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

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

什么是 Python 中的 Pandas 库?

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

将 Excel 文件与 Pandas 合并时,我们可以使用 read_excel() 函数将每个文件中的数据读入 Pandas DataFrame 对象。将所有数据放在单独的 DataFrame 中后,我们就可以使用 Pandas 的内置函数(如 merge()、join() 和 concat())将数据框合并为一个 DataFrame。

Pandas 的 merge() 函数提供了基于特定列合并 DataFrame 的功能,类似于 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)

步骤 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

# 识别要合并的文件
path = "yourpath/to/files/"
files = os.listdir(path)
files_xlsx = [f for f in files if f.endswith('.xlsx')]

# 读取 Excel 文件并将它们连接起来
mydf_list = [pd.read_excel(os.path.join(path, f)) for f in files_xlsx]
mydf = pd.concat(mydf_list)

# 将合并的数据框写入新的 Excel 文件
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

# 识别要合并的文件
path = "yourpath/to/files/"
files = os.listdir(path)
files_xlsx = [f for f in files if f.endswith('.xlsx')]

# 初始化一个空数据框
mymerged_df = pd.DataFrame()

# 读取 Excel 文件并将它们连接起来
for file in files_xlsx:
    data = pd.read_excel(os.path.join(path, file))
    mymerged_df = pd.concat([mymerged_df, data], ignore_index=True)

# 将合并的数据框写入新的 Excel 文件
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

# 读取第一个 Excel 文件
mydf1 = pd.read_excel('myfile1.xlsx')

# 读取第二个 Excel 文件
mydf2 = pd.read_excel('myfile2.xlsx')

# 根据公共列合并两个数据框
mymerged_df = pd.merge(mydf1, mydf2, on='common_column')

# 将合并的数据框写入新的 Excel 文件
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 文件从未如此简单。


相关文章