我有一個數百個Excel文件的文件夾,每個工作簿中都有九張紙,每個文件夾的組織方式都相同。我正在運行以下代碼來遍歷文件,併爲所有工作簿中的每個工作表創建一個數據框(因此dataframe「sheet_a_df」將從連接到單個數據框的每個工作簿中打印出「a」)。基於工作表名稱在多個Excel工作簿中爲for循環創建數據框?
sheet_a_df = pd.DataFrame()
for file in glob.glob('C:\\Users\*.xlsx'):
df = pd.read_excel(file,sheetname='a')
sheet_1_df = sheet_1_df.append(df,ignore_index=True).dropna()
sheet_b_df = pd.DataFrame()
for file in glob.glob('C:\\Users\\*.xlsx'):
df = pd.read_excel(file,sheetname='b')
sheet_b_df = sheet_b_df.append(df,ignore_index=True).dropna()
# And so on for all nine sheet names...
但是,這需要複製和粘貼代碼九次(每張紙一次)。
有沒有更適當的方法來做到這一點?
回顧this question,我知道字典是在for循環中創建多個數據框的方法。我也想根據工作表的名稱爲每個df命名。我創建了一個我的工作表名稱列表,並嘗試了下面的代碼,但是得到一個KeyError,它只是返回第一個工作表的名稱。
sheet_names = ['a',
'b',
'c',
...,]
df_dict = {}
for file in glob.glob('C:\\Users\*.xlsx'):
for sheet in sheet_names:
df = pd.read_excel(file,sheetname=sheet)
df_dict[sheet] = df_dict[sheet].append(df)
有沒有辦法解決上述代碼來創建所有九個dfs,同時根據它們來自的工作表進行命名?
謝謝;這就是我一直在尋找的。 – dmitriys