从不同数据框中的Excel中读取多个选项卡

时间:2017-03-19 14:21:07

标签: python pandas

我正在尝试将电子表格中的多个标签读取到不同的数据框,一旦所有带有数据的标签都在程序上,就应该停止。

对于第一部分,我希望做一些像

这样的事情
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

我希望在读取所有带数据的标签后程序停止

2 个答案:

答案 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