我有 5 個 Excel 文件,每個文件包含 8 個工作表,每個工作表包含大約 30 行。所以這意味著 1 個文件總共有 30 x 8 = 240 行。有沒有我可以使用的快速技巧將所有這 5 個文件(包括工作表)合并到 1 個 Excel 文件中,總共 240 x 5 行 = 1200 行?這是我當(dāng)前的代碼:import osimport pandas as pdfiles = os.listdir('c:\data\KM\Desktop\my_folder') os.chdir(r'c:\data\KM\Desktop\my_folder')df = pd.DataFrame()for file in files: if file.endswith('.xlsx'): df = df.append(pd.read_excel(file))df.head() df.to_excel('all_files.xlsx') 現(xiàn)在有了這段代碼我有兩個問題:從所有文件中,我只得到第一張紙。所以它總共合并了 8 張而不是 40 (8x5) :(對于每個文件,它還復(fù)制列標(biāo)題,這只需要為第一個文件完成。所有文件和工作表都具有相同的列名。感謝大家的幫助。
1 回答

aluckdog
TA貢獻1847條經(jīng)驗 獲得超7個贊
對所有工作表使用read_excel
with?sheet_name=None
,將 DataFrame 列表連接在一起concat
,最后再次將其用于一個大的 DataFrame:
import glob
files = glob.glob(r'c:/data/KM/Desktop/my_folder/*.xlsx')?
dfs = (pd.concat(pd.read_excel(fp, sheet_name=None)) for fp in files)
dfbig = pd.concat(dfs, ignore_index=True)
編輯:要刪除最后一個工作表名稱,請將 orderdict 轉(zhuǎn)換為 DataFrame 列表并通過索引刪除最后一個:
files = glob.glob(r'D:/Dropbox/work-joy/so/files/*.xlsx')
dfs = (pd.concat([v for k, v in pd.read_excel(fp, sheet_name=None).items()][:-1])?
? ? ? ? ? ? ? ? ?for fp in files)
df = pd.concat(dfs, ignore_index=True)
添加回答
舉報
0/150
提交
取消