我正在尝试将电子表格中的多个标签读取到不同的数据框,一旦所有带有数据的标签都在程序上,就应该停止。
对于第一部分,我希望做一些像
这样的事情xls = pd.ExcelFile('Unique.xlsx')
for i in range(1,n): # n should be number of tabs with data
try:
df_Sector(i)=xls.parse('Sheet'+i) # df_Sector(i) has to be dataframe
except:
pass
我希望在读取所有带数据的标签后程序停止
答案 0 :(得分:0)
这将读取所有工作表并制作数据帧字典:
xl = pd.read_excel('Unique.xlsx', sheetname=None)
要获取特定工作表,您可以执行以下操作:
xl_dict = {}
sheetname_list = ['blah1', 'blah2', 'blah3']
for sheet in sheetname_list:
xl_dict[sheet] = pd.read_excel('Unique.xlsx', sheetname=sheet)
或:
xl = pd.read_excel('Unique.xlsx', sheetname=sheetname_list)
答案 1 :(得分:0)
演示:
文件名
In [94]: fn = r'D:\temp\.data\test.xlsx'
创建pandas.io.excel.ExcelFile
对象
In [95]: xl = pd.ExcelFile(fn)
它有sheet_names
属性
In [96]: xl.sheet_names
Out[96]: ['Sheet1', 'aaa']
我们可以用它来循环播放工作表
In [98]: for sh in xl.sheet_names:
...: df = xl.parse(sh)
...: print('Processing: [{}] ...'.format(sh))
...: print(df.head())
...:
Processing: [Sheet1] ...
col1 col2 col3
0 11 12 13
1 21 22 23
2 31 32 33
Processing: [aaa] ...
a b c
0 1 2 3
1 4 5 6
2 7 8 9
更优雅的方法是生成DataFrames字典:
In [100]: dfs = {sh:xl.parse(sh) for sh in xl.sheet_names}
In [101]: dfs.keys()
Out[101]: dict_keys(['Sheet1', 'aaa'])
In [102]: dfs['Sheet1']
Out[102]:
col1 col2 col3
0 11 12 13
1 21 22 23
2 31 32 33
In [103]: dfs['aaa']
Out[103]:
a b c
0 1 2 3
1 4 5 6
2 7 8 9