2017-01-15 4 views
-2

Ich habe ein Wörterbuch, das alle Datenframes von einer bestimmten Excel-Datei speichert.Speichern aller Excel-Blätter als Pandas Datenframe

import pandas as pd 
xl=pd.ExcelFile('pandas_worksheets.xlsx') 

mydic={} 
for i in xl.sheet_names: 
    mydic[i] = xl.parse(i) 

kann ich jedes beliebigen Datenrahmen Blatt nennt diese Syntax:

mydic['olympic'] 

Aber wie einfach nenne ich „Olympic“, dass der Datenrahmen zurück? (Ohne mydic zu verwenden)

somthing wie das funktioniert ...

olympic = xl.parse('olympic') 

Aber die gleiche Logik funktioniert nicht in dem for-Schleife

for i in xl.sheet_names: 
    i = xl.parse(i) 

Es speichert den letzten Datenrahmen als wörtlichen i statt es durch Blattname ersetzen.


Update:

mydic={'a':1, 'b': 2} 

for i in mydic: 
    i = mydic[i] 

a 

NameError: name 'a' is not defined 

(Erwartungswert 1 anstelle von Nameerror)

Antwort

2

Obwohl es auf die Injektion und die Verschmutzung der globalen Namensraum verpönt ist, wenn Sie ein Wörterbuch halten können, können Sie noch tun es in ein paar Weisen:

Mit globals()

mydic={'a':1, 'b': 2} 

globals().update(mydic) 
print a 
print b 

Ausgang:

1 
2 

Mit exec():

mydic={'a':1, 'b': 2} 

for i in mydic: 
    exec("%s = mydic['%s']"%(i,i)) 

print a 
print b 

Ausgang:

1 
2 
Verwandte Themen