如何將所有 CSV 檔案合併到單個 Pandas DataFrame 中 - Python?
要合併所有 CSV 檔案,請使用 GLOB 模組。在 **concat()** 中使用 os.path.join() 方法 將 CSV 檔案合併在一起。以下是一些我們可以用來將多個 CSV 檔案合併到單個 DataFrame 中的常用方法 -
-
os.path.join() 和 glob
-
使用 glob 模式合併 CSV 檔案
-
按特定順序合併 CSV 檔案
使用 'os.path.join()' 和 glob
首先,匯入所需的庫。我們將 pd 作為 Python Pandas 庫的別名。
import pandas as pd import glob import os
此方法透過連線目錄路徑和檔名模式來構造檔案路徑。
示例
在下面的示例程式碼中,**glob.glob()** 返回與給定模式 (“sales”) 匹配的所有檔名的列表。
import pandas as pd
import glob
import os
# setting the path for joining multiple files
files = os.path.join("C:\Users\amit_\Desktop", "sales*.csv")
# list of merged files returned
files = glob.glob(files)
print("Resultant CSV after joining all CSV files at a particular location...");
# joining files with concat and read_csv
df = pd.concat(map(pd.read_csv, files), ignore_index=True)
print(df)
Sales1.csv
| 汽車 | 地點 | 銷量 | |
|---|---|---|---|
| 0 | 奧迪 | 班加羅爾 | 80 |
| 1 | 保時捷 | 孟買 | 110 |
| 2 | 勞斯萊斯 | 浦那 | 100 |
Sales2.csv
| 汽車 | 地點 | 銷量 | |
|---|---|---|---|
| 3 | 寶馬 | 德里 | 95 |
| 4 | 梅賽德斯 | 海德拉巴 | 80 |
| 5 | 蘭博基尼 | 昌迪加爾 | 80 |
Sales3.csv
| 汽車 | 地點 | 銷量 | |
|---|---|---|---|
| 6 | 沃爾沃 | 拉賈斯坦邦 | 150 |
| 7 | 現代 | 曼尼普爾邦 | 120 |
| 8 | 豐田 | 喜馬偕爾邦 | 70 |
輸出
將所有 CSV 檔案連線到特定位置後的結果 CSV 檔案。
| 汽車 | 地點 | 銷量 | |
|---|---|---|---|
| 0 | 奧迪 | 班加羅爾 | 80 |
| 1 | 保時捷 | 孟買 | 110 |
| 2 | 勞斯萊斯 | 浦那 | 100 |
| 3 | 寶馬 | 德里 | 95 |
| 4 | 梅賽德斯 | 海德拉巴 | 80 |
| 5 | 蘭博基尼 | 昌迪加爾 | 80 |
| 6 | 沃爾沃 | 拉賈斯坦邦 | 150 |
| 7 | 現代 | 曼尼普爾邦 | 120 |
| 8 | 豐田 | 喜馬偕爾邦 | 70 |
使用 glob 模式合併 CSV 檔案
當我們確定檔案位置時,可以直接使用檔案路徑,而無需使用 **os.path.join()**,路徑硬編碼到 **glob** 方法中。
示例
在下面的示例中,列表推導式 **[pd.read_csv(f) for f in files]** 讀取每個 CSV 檔案,然後將其傳遞給 **pd.concat()** 以進行合併。
import pandas as pd
import glob
# Fetch all CSV files directly from the path
files = glob.glob("C:\Users\amit_\Desktop\sales*.csv")
# Concatenate them into a single DataFrame
df = pd.concat([pd.read_csv(f) for f in files], ignore_index=True)
# Display the final DataFrame
print(df)
輸出
| 汽車 | 地點 | 銷量 | |
|---|---|---|---|
| 0 | 奧迪 | 班加羅爾 | 80 |
| 1 | 保時捷 | 孟買 | 110 |
| 2 | 勞斯萊斯 | 浦那 | 100 |
| 3 | 寶馬 | 德里 | 95 |
| 4 | 梅賽德斯 | 海德拉巴 | 80 |
| 5 | 蘭博基尼 | 昌迪加爾 | 80 |
| 6 | 沃爾沃 | 拉賈斯坦邦 | 150 |
| 7 | 現代 | 曼尼普爾邦 | 120 |
| 8 | 豐田 | 喜馬偕爾邦 | 70 |
按特定順序合併 CSV 檔案
如果我們想按 **特定順序** 合併檔案,可以在連線之前對檔名列表進行排序。在下面的示例中,**file.sort()** 函式根據命名按字母或數字順序對檔案進行排序。
import pandas as pd
import glob
import os
# Fetch all CSV files matching the pattern
files = glob.glob("C:\Users\amit_\Desktop\sales*.csv")
# Sort files alphabetically or numerically (depending on naming)
files.sort()
# Concatenate them into a DataFrame
df = pd.concat(map(pd.read_csv, files), ignore_index=True)
# Display the final DataFrame
print(df)
輸出
| 汽車 | 地點 | 銷量 | |
|---|---|---|---|
| 0 | 奧迪 | 班加羅爾 | 80 |
| 1 | 保時捷 | 孟買 | 110 |
| 2 | 勞斯萊斯 | 浦那 | 100 |
| 3 | 寶馬 | 德里 | 95 |
| 4 | 梅賽德斯 | 海德拉巴 | 80 |
| 5 | 蘭博基尼 | 昌迪加爾 | 80 |
| 6 | 沃爾沃 | 拉賈斯坦邦 | 150 |
| 7 | 現代 | 曼尼普爾邦 | 120 |
| 8 | 豐田 | 喜馬偕爾邦 | 70 |
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP