如何將所有 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

更新於: 2024年10月9日

16K+ 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告