【发布时间】:2018-02-04 00:47:09
【问题描述】:
我有一个包含数百个 Excel 文件的文件夹,所有文件的组织方式都相同,每个工作簿中有九张工作表。我正在运行以下代码来迭代文件并为所有工作簿中的每个工作表创建一个数据框(因此数据框“sheet_a_df”将是每个工作簿中连接成单个数据框的工作表“a”)。
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,同时根据它们来自的工作表命名它们?
【问题讨论】:
标签: python excel pandas for-loop dataframe