如何使用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+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始
廣告