[英]Importing multiple excel files and combining into dataframe
我正在嘗試將許多 excel 文件(大約 400 個)從一個文件夾導入一個 dataframe,但我似乎遇到了錯誤。
我想要從我的文件夾中獲取的文件名稱為文件名,后跟日期 - “filename_yyyy_mm_dd.xlsx”。
我想保留 header,因為這些文件在不同日期都有相同的列。
我當前的代碼是:
import glob
import pandas as pd
import os
path = r"C:\Users\..."
my_files = glob.glob(os.path.join(path, "filename*.xlsx"))
file_li = []
for filename in my_files:
df = pd.read_excel(filename, index_col=None, header=1)
file_li.append(df)
frame = pd.concat(file_li, axis=0, ignore_index=True)
當我調用我的框架時,我沒有得到任何回應? 我調用文件名的方式有問題嗎?
更新:
我的 excel 文件如下所示:
第 1 列 | 第 2 欄 | 第 3 欄 | 第 4 列 | 第 5 欄 | 第 6 列 | 第 7 欄 | 第 8 列 | 第 9 欄 | 第 10 欄 | 第 11 欄 | 第 12 欄 | 第 13 欄 | 第 14 欄 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
日期 | SREC-MD | SREC | 2月25日 | MDX | F | 85 | 0 | 0 | 8086 | 02/25/2025 | 20107 |
大約有 300-400 行。
我的 output 已經捕獲了 14 列,但它添加了更多,因為 frame.info() 顯示我有 922 列。
更新 2:
除了使用 concat,您可以嘗試將文件讀入 df,然后使用 mode='a' 將它們 append 合並為一個組合 csv。 然后讀取組合csv。
for filename in my_files:
df = pd.read_excel(filename, index_col=None, header=1)
df.to_csv('combined.csv', mode='a', header=False)
df = pd.read_csv('combined.csv')
很難說為什么你會得到額外的列,但你可以試試這個:
import glob
import pandas as pd
import os
path = r"C:\Users\..."
my_files = glob.glob(os.path.join(path, "filename*.xlsx"))
file_li = []
for filename in my_files:
df = pd.read_excel(filename, index_col=None, header=None)
file_li.append(df)
frame = (
pd.concat(file_li, axis=0, ignore_index=True)
.dropna(how="all") #to get rid of the eventual extra rows abobe each header
.drop_duplicates() #to get rid of the cumulated duplicated headers
.T.set_index(0).T #to make the first row as header of the dataframe
)
但是,我建議您檢查與您的電子表格相比, frame
中是否有任何缺失的行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.