我已經搜索了大約一個小時來尋找答案,但我找到的解決方案都沒有奏效。我正在嘗試將一個充滿 CSV 的檔案夾放入一個資料框中,以輸出到一個大的 csv。這是我當前的代碼:
import os
sourceLoc = "SOURCE"
destLoc = sourceLoc "MasterData.csv"
masterDF = pd.DataFrame([])
for file in os.listdir(sourceLoc):
workingDF = pd.read_csv(sourceLoc file)
print(workingDF)
masterDF.append(workingDF)
print(masterDF)
SOURCE 是一個檔案夾路徑,但我不得不洗掉它,因為它是一個作業網路路徑。該回圈正在將 CSV 讀取到workingDF變數中,因為當我運行它時,它會將資料列印到控制臺中,但它也會為每個檔案找到 349 行。它們都沒有那么多行資料。
當我列印masterDF它列印Empty DataFrame Columns: [] Index: []
我的代碼來自此解決方案,但該示例使用 xlsx 檔案,我不確定需要進行哪些更改(如果有)才能使其與 CSV 一起使用。.append 和 read_csv 上的 Pandas 檔案非常有限,并沒有指出我做錯了什么。
任何幫助,將不勝感激。
uj5u.com熱心網友回復:
您可以使用 glob
import glob
import pandas as pd
import os
path = "your path"
df = pd.concat(map(pd.read_csv, glob.glob(os.path.join(path,'*.csv'))))
print(df)
uj5u.com熱心網友回復:
您的代碼有一些問題,但主要是pd.append回傳一個新的資料幀,而不是就地修改。所以你必須這樣做:
masterDF = masterDF.append(workingDF)
我也喜歡 I_Al-thamary 采用的方法 - concat 可能會更快。
我建議的最后一件事是,不要使用glob, check out pathlib。
import pandas as pd
from pathlib import Path
path = Path("your path")
df = pd.concat(map(pd.read_csv, path.rglob("*.csv"))))
uj5u.com熱心網友回復:
您可以將它們全部存盤在一個串列中pd.concat,最后存盤它們。
dfs = [
pd.read_csv(os.path.join(sourceLoc, file))
for file in os.listdir(sourceLoc)
]
masterDF = pd.concat(df)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/420500.html
標籤:
