2017-01-15 9 views
-2

私は与えられたExcelファイルのすべてのデータフレームを格納する辞書を持っています。すべてのExcelシートをpandasデータフレームとして保存

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

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

私はこの構文を使用して、任意のデータフレームシートを呼び出すことができます。

mydic['olympic'] 

しかし、どのように私は単純にそのデータフレームを返すために、「オリンピック」と呼ぶのですか? ...このような気にいらない作品

(mydic使用せずに)

olympic = xl.parse('olympic') 

しかし、同じ論理がそれではなく、私の最後のデータフレームがリテラルとして保存し、forループ

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

では動作しません。それをシート名で置き換える。


更新:

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

for i in mydic: 
    i = mydic[i] 

a 

NameError: name 'a' is not defined 

(代わりにNameErrorの期待値1)

答えて

2

あなたは辞書を維持することができたときにそれがグローバルネームスペースを注入し、汚染ひんしゅくを買うですが、あなたはまだやることができますそれはいくつかの方法でです:

globals()

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

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

出力:

1 
2 

exec()付:

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

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

print a 
print b 

出力:

1 
2 
関連する問題