2017-10-30 14 views
0

私は次のように3つのデータフレームを作成したいと思います:パンダのデータフレームを作成するためのループ - さまざまなデータフレーム名?

basket = [['Apple', 'Banana', 'Orange']] 

for fruit in basket: 
    fruit = pd.DataFrame(np.random.rand(10,3)) 

しかし、これを実行した後、何かランニング:

Apple 

してもエラーに

NameError: name 'Apple is not defined

しかし、 '果物' を提供しますデータフレームとして機能します。

生成された各データフレームに名前として変数を使用させることはどのように可能ですか?

+0

私は変数オーバー辞書を示唆しているに割り当てるより良い練習になります。 – Dark

答えて

1

これは動作します:

basket = ['Apple', 'Banana', 'Orange'] 
for fruit in basket: 
    vars()[fruit] = pd.DataFrame(np.random.rand(10,3)) 

は、しかし、おそらく辞書例えば:

var_dict={} 
basket = ['Apple', 'Banana', 'Orange'] 
for fruit in basket: 
    var_dict[fruit] = pd.DataFrame(np.random.rand(10,3)) 
+0

ありがとう、これは私が気づいていなかったことに役立ちます。このように唯一の方法は、var_dict ['Apple']経由でしか見ることができないので、どのようにしてフルーツ名(つまりApple)からデータフレームを呼び出すのですか? –

+0

私が与えた最初のソリューションは、あなたが名前で直接呼び出すことができますが、辞書の解決策はありません – ags29

3

代わりの変数を作成し、その後グローバルを使用することをお勧めしますが、場合にあなたが変数に格納したくない

basket = ['Apple', 'Banana', 'Orange'] 

d_o_dfs = {x: pd.DataFrame(np.random.rand(10,3)) for x in basket} 

すなわちループ上の変数を作成するには、そのことをお勧め、DFSを保存するために辞書を使用しますすなわち

for i in basket: 
    globals()[i] = pd.DataFrame(np.random.rand(10,3)) 

出力: Bananaそしてd_o_dfs['Banana']

 
     0   1   2 
0 0.822190 0.115136 0.807569 
1 0.698041 0.936516 0.438414 
2 0.184000 0.772022 0.006315 
3 0.684076 0.988414 0.991671 
4 0.017289 0.560416 0.349688 
5 0.379464 0.642631 0.373243 
6 0.956938 0.485344 0.276470 
7 0.910433 0.062117 0.670629 
8 0.507549 0.393622 0.003585 
9 0.878740 0.209498 0.498594 
関連する問題