我有以下所有文件列表:
['Input_controls\CTA-02 Q2.xlsx',
'Input_controls\CTA-14 Q2.xlsx',
'Input_controls\CTA-23 Q2.xlsx',
'Input_controls\CTA-57 Q2.xlsx',
'Input_controls\PVHE FMS GRC CTA Analysis Q2 2021.xlsx',
'Input_controls\PVHE FMS GRC SoD Analysis Q2 2021.xlsx',
'Input_controls\SOD-16 Q2.xlsb',
'Input_controls\SOD-21_Q2.xlsx',
'Input_controls\SOD-74 Q2.xlsx']
现在我想要一份包含所有文件及其各自表格的df所以理想的输出是:
file sheet_name#1 sheet_name#2 sheet_name#x
'Input_controls\CTA-02 Q2.xlsx' foo bar test
以上针对每个输入文件
我起草了以下代码,但它一直在执行(从未停止(:
#bad
#xl = pd.ExcelFile('archvio.xlsx')
df_combined = pd.DataFrame()
for file in allfiles:
xl = pd.ExcelFile(file)
for sheet_name in xl.sheet_names:
df = xl.parse(sheet_name)
df['sheet'] = sheet_name # this adds `sheet_name` into the column `Week`
df_combined = df_combined.append(df)
我是第一个回答的!我的意思是,你能做的就是在最后添加一个break
,仅此而已!很简单,对吧?修复了下面的代码!
#not bad anymore
#xl = pd.ExcelFile('archvio.xlsx')
df_combined = pd.DataFrame()
for file in allfiles:
xl = pd.ExcelFile(file)
for sheet_name in xl.sheet_names:
df = xl.parse(sheet_name)
df['sheet'] = sheet_name # this adds `sheet_name` into the column `Week`
df_combined = df_combined.append(df)
break
IIUC,您可以使用一个简单的字典理解:
df = pd.concat({f: pd.Series(pd.ExcelFile(f).sheet_names).rename(lambda x: x+1)
for f in files}, axis=1).T.add_prefix('sheet_')
这里有一个熊猫测试样本的例子:
sheet_1 sheet_2 sheet_3 sheet_4
times_1904.xlsx Sheet1 NaN NaN NaN
test_types.xlsx Sheet1 NaN NaN NaN
testmultiindex.xlsx single_column_name mi_column mi_index both