我有一个数百个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