LoginSignup
kashy
@kashy (Pot-au-feu)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

ループの回数だけ、新しいデータフレームを作成し、global変数として参照するには

解決したいこと

for ループの回数だけ、新しいデータフレームを新しい名前で作成し、
ループの外でglobal変数としてデータフレームを参照したいです。

例えば、ループ処理によって
df0
df1
df2
df3
を作成し、ループ外でもglobal変数として、データフレームを参照できるようにしたいです。解決策をご教示お願いします。

発生している問題・エラー

df_iとしてiに数字を代入したいのですが、数字が代入されずにdf_iという
変数1つになってしまいます。


または、問題・エラーが起きている画像をここにドラッグアンドドロップ

### 該当するソースコード
```python
for i in range(3):
    df_i = pd.DataFrame(columns=リストから参照)
    print(df_i)
#理想として下記のデータフレームを定義したいです。
#df_0
#df_1
#df_2


ソースコードを入力

自分で試したこと

0

1Answer

せっかくループで書ける処理なのに変数を別々に作ってしまうのはあまりスマートであるとは感じられませんが,一応,globals()を用いて次のように書くことで文字列から変数を定義できます.

import numpy as np
import pandas as pd

for i in range(3):
	globals()[f"df_{i}"] = pd.DataFrame(np.random.random(10))

print(df_0)
print(df_1)
print(df_2)

個人的には,配列に格納してやって

import numpy as np
import pandas as pd

df_n = list()
for i in range(3):
	df_n.append(pd.DataFrame(np.random.random(10)))

for df in df_n:
    print(df)

と書く方が好みですがやはり好みは人それぞれということでしょうか...

余談

コードブロック等の機能が動作していることから,kashyさんの書かれた質問がぐちゃぐちゃになっております.今一度,適切に反映されているかどうかの確認をお願いします.

0

Comments

  1. @kashy

    Questioner
    ご回答ありがとうございます!
    文字列から変数のて定義はこのように記述できるんですね。
    使い方に慣れていないこともあり、
    読みにくい文章になってしまい申し訳ありませんでした!以後気を付けます。
  2. 解決されたのであればよかったです!
    使い方に慣れると質問もしやすくなると思います!
    本質問をクローズにしていただければ終了となります.
    お疲れ様でした.頑張ってください!
  3. @kashy

    Questioner
    ありがとうございます!
    職場で簡単な業務効率化を目的に最近Pythonを始めてみました!
    今後ともよろしくお願い致します!

Your answer might help someone💌