2017-03-19 3 views
1

Ich versuche, mehrere Tabs in der Tabelle zu verschiedenen Datenrahmen zu lesen und sobald alle Tabs mit Daten vorbei sind, sollte das Programm aufhören.Lesen mehrerer Tabs von Excel in verschiedenen Datenrahmen

Für ersten Teil suche ich so etwas wie

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 

ich das Programm einmal mit Daten alle Registerkarten stoppen tun mag, sind

Antwort

0

Demo:

Namensdatei

In [94]: fn = r'D:\temp\.data\test.xlsx' 

Schaffung pandas.io.excel.ExcelFile Objekt

In [95]: xl = pd.ExcelFile(fn) 

es hat sheet_names Attribut

In [96]: xl.sheet_names 
Out[96]: ['Sheet1', 'aaa'] 

wir es zum Durchschleifen Blätter können

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 

etwas elegantere Weg ist, ein Wörterbuch von Datenrahmen zu erzeugen:

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 
+0

danke. Das ist sehr hilfreich. – user2560244

+0

@ user2560244, froh, ich könnte helfen – MaxU

0

lesen Diese alle Blätter lesen und einen Wörterbuch des Datenrahmen machen:

xl = pd.read_excel('Unique.xlsx', sheetname=None) 

Um bestimmte Blätter zu bekommen, könnten Sie tun:

xl_dict = {} 
sheetname_list = ['blah1', 'blah2', 'blah3'] 
for sheet in sheetname_list: 
    xl_dict[sheet] = pd.read_excel('Unique.xlsx', sheetname=sheet) 

oder:

xl = pd.read_excel('Unique.xlsx', sheetname=sheetname_list) 
+0

Danke, aber hier sind wir vorbei nach unten " Blattname_Liste "unter der Annahme, dass wir wissen, wie viele Blätter es gibt. Falls ich nicht weiß, wie viele Blätter (oder Tabs) mit Daten vorhanden sind und wie ich aufhören soll, nachdem alle Daten in verschiedenen Tabs in verschiedenen Datenrahmen gespeichert wurden, welche Logik sollte ich in diesem Fall befolgen. – user2560244

+0

Die erste Codezeile in meiner Antwort liest alle Blätter, die in der Arbeitsmappe vorhanden sind, und fügt sie in ein Wörterbuch als Datenrahmen ein. Die "sheetname_list" -Option ist für, wenn Sie die Namen der Zielseiten kennen, wie Sie erwähnen. Probieren Sie die Zeile mit "sheetname = None" aus und sehen Sie, ob das das tun könnte, was Sie anfordern. Sie können die Namen der Arbeitsblätter nach dem Lesen der Excel-Datei mit xl.keys() als Dictionary-Schlüssel abrufen und auf die Datenrahmen mit xl [] zugreifen. – b2002

+0

danke. Es ist wirklich hilfreich – user2560244

Verwandte Themen