Python将多个excel文件合并为一个文件

  • Post category:Python

下面是Python将多个Excel文件合并成一个文件的完整实例教程。

1. 确定合并方式

在合并多个Excel文件之前,需要先确定合并方式。常见的合并方式包括两种:

  • 合并Excel文件的所有工作表
  • 合并Excel文件的指定工作表

2. 导入相关库

在Python中,我们需要使用Pandas库来实现Excel文件的读写操作。因此,首先需要导入相关库。

import pandas as pd
import os

3. 读取多个Excel文件

在读取多个Excel文件之前,首先需要确定需要读取的Excel文件所在的目录。本例中,我们将多个Excel文件放置在文件夹“example”中,该文件夹与Python脚本在同一级目录下。

path = "./example"  
files = os.listdir(path)

其中,os.listdir()方法用于返回指定目录下的文件列表。

然后,我们可以使用Pandas库的read_excel()方法读取多个Excel文件。另外,为了区分多个Excel文件读入的数据,需要为每个读入的数据添加一个标识列。在本例中,我们使用文件名作为标识列的值。

df_list = []  
for file in files:  
    if file.endswith(".xlsx"):  
        df = pd.read_excel(os.path.join(path, file))  
        df["file_name"] = file  
        df_list.append(df)

4. 合并多个Excel文件

在确定了需要合并的数据集之后,即可使用Pandas库的concat()方法将多个数据集合并为一个数据集,具体代码如下:

merged_df = pd.concat(df_list)  

5. 将合并后的数据保存为Excel文件

最后,将合并后的数据保存为Excel文件,并存储在指定路径下。

merged_df.to_excel("./merged_file.xlsx", index=False)

完整代码如下:

import pandas as pd
import os

path = "./example"  
files = os.listdir(path)

df_list = []  
for file in files:  
    if file.endswith(".xlsx"):  
        df = pd.read_excel(os.path.join(path, file))  
        df["file_name"] = file  
        df_list.append(df)

merged_df = pd.concat(df_list)  
merged_df.to_excel("./merged_file.xlsx", index=False)

示例说明1:合并多个Excel文件的所有工作表

现在,我们有3个Excel文件,分别为“data1.xlsx”、“data2.xlsx”和“data3.xlsx”,每个Excel文件中都包含多个工作表。

假设我们需要将这3个Excel文件中的所有工作表合并成一个Excel文件,即将“data1.xlsx”、“data2.xlsx”和“data3.xlsx”合并为一个文件。

首先,将这3个Excel文件放置到与Python脚本相同的目录下。然后,按照以上步骤操作,将这3个Excel文件中的数据合并为一个数据集,并将合并后的数据保存为一个Excel文件。

示例代码如下:

import pandas as pd
import os

path = "./"  
files = os.listdir(path)

df_list = []  
for file in files:  
    if file.endswith(".xlsx"):  
        df = pd.read_excel(os.path.join(path, file), sheet_name=None)  
        for sheet_name in df.keys():  
            df[sheet_name]["file_name"] = file  
            df[sheet_name]["sheet_name"] = sheet_name  
        df_list.append(df)

merged_df = pd.concat(df_list, axis=0, ignore_index=True)  
merged_df.to_excel("./merged_file.xlsx", index=False)

示例说明2:合并指定Excel文件指定工作表

假设我们有两个Excel文件,“data1.xlsx”和“data2.xlsx”,每个Excel文件中都包含3个工作表。现在,我们需要将这两个Excel文件的第二个工作表合并成一个Excel文件。

首先,将这两个Excel文件放置到与Python脚本相同的目录下。然后,按照以下步骤操作,将这两个Excel文件中的第二个工作表合并为一个数据集,并将合并后的数据保存为Excel文件。

示例代码如下:

import pandas as pd
import os

path = "./"  
files = ["data1.xlsx", "data2.xlsx"]
sheets = ["Sheet2"]

df_list = []  
for file in files:  
    if file.endswith(".xlsx"):  
        df = pd.read_excel(os.path.join(path, file), sheet_name=sheets)  
        for sheet_name in df.keys():  
            df[sheet_name]["file_name"] = file  
            df[sheet_name]["sheet_name"] = sheet_name  
        df_list.append(df)

merged_df = pd.concat(df_list, axis=0, ignore_index=True)  
merged_df.to_excel("./merged_file.xlsx", index=False)

注意,这里需要将待合并的工作表指定为一个列表,通过sheet_name参数传递给read_excel()方法。同时,我们也可以设置files和sheets变量,来指定待合并的Excel文件和工作表。