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