你好 StackOverflow 社區!
在這里苦苦掙扎的新蟒蛇人。我的代碼確實有效,直到我添加了更多代碼并且我試圖找出我做錯了什么來搞砸它。我正在嘗試匯入檔案,讀取檔案名,洗掉列,重置索引,用檔案名填充一列(稍后我需要該資訊),然后繼續下一個檔案。
出于某種原因,它只匯入檔案夾中的最后一個檔案。我知道我做錯了什么。
任何幫助將不勝感激
csvPath = "blahblah"
dfData = pd.DataFrame(['NTLogin', 'Date', '', 'FileName'])
for f in glob.glob(csvPath "\*.csv"):
df = pd.read_csv(f)
filename = (os.path.basename(f))
df.drop(df.columns[[0,1,3]], axis=1, inplace=True)
df['ID'] = df['ID'].str.upper()
df = df.set_index('ID').stack().reset_index()
df['Filename'] = filename
dfData = pd.concat([df, dfData], ignore_index=True)
uj5u.com熱心網友回復:
它正在處理所有 CSV,在連接時您沒有使用基本資料框 ( dfData),而只是使用新的資料框 ( df)。
還考慮到Filename,它每次都會被覆寫。有它df來避免這種情況:
df['Filename'] = filename
dfData = pd.concat([dfData, df], ignore_index=True)
串列方法
正如 pyaj 在評論中所建議的那樣,您也可以使用串列來實作相同的目的。
它看起來像這樣:
csvPath = "blahblah"
df_list = []
for f in glob.glob(csvPath "\*.csv"):
df = pd.read_csv(f)
filename = (os.path.basename(f))
df.drop(df.columns[[0,1,3]], axis=1, inplace=True)
df['ID'] = df['ID'].str.upper()
df = df.set_index('ID').stack().reset_index()
df['Filename'] = filename
df_list.append(df)
dfData = pd.concat(df_list, ignore_index=True)
您還可以檢查串列以查看每個單獨的資料框是否正確。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451426.html
上一篇:在VBA中使用變數設定物件名稱
