質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1036閲覧

Pythonで、execを用いない方法を知りたい。

bobby2128

総合スコア42

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/10/24 04:47

お世話になります。pythonコードを勉強中の者です。

以下のコードは、unique_listに格納した各文字列毎に、
データフレームを作成するコードです。
生成されるデータフレームは、
df_Code_A,df_Code_B,df_Code_C,df_Code_D,df_Code_Eの5つのデータフレームで、
列名は、colum_list内の列名になります。

python3

1unique_list=['Code_A','Code_B','Code_C','Code_D','Code_E'] 2colum_list=['Colum_A','Colum_B','Colum_C','Colum_D','Colum_E'] 3 4for code in unique_list: 5 exec("df_%s = pd.DataFrame(columns=colum_list)" %(code))

このコードの中には、execを用いていますが、これを用いない場合、
同様のデータフレームを作るためにはどのような手段があるかを知りたいです。

お手数をおかけいたしますが、どうかご回答をよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2018/10/24 04:53

DataFrame の一覧を df_Code_A, df_Code_B ではなく、辞書等に入れておくやり方ではなにか問題があるのでしょうか?
bobby2128

2018/10/24 06:05

tiitoi様 この度はご助言いただきありがとうございました。hayataka2049様のご回答にて、具体例がありさらなる理解につながりました。ありがとうございました。
guest

回答1

0

ベストアンサー

pythonでは普通の方法で変数名を動的に生成・参照することはできません。execやevalを使えばできますが、かなりの邪道だと思ってください。バグも生まれやすいです。

適当なコレクション型を作って、その中に入れるのが一般的な方法です。今回はキーで参照したいと思うので、dictが適しているでしょう。

python

1unique_list=['Code_A','Code_B','Code_C','Code_D','Code_E'] 2colum_list=['Colum_A','Colum_B','Colum_C','Colum_D','Colum_E'] 3 4dfs = dict() 5for x in unique_list: 6 dfs[x] = pd.DataFrame(columns=colum_list) 7 8# 元のコードでdf_Code_Aとして参照したかったものはdfs['Code_A']と書けば取れる

投稿2018/10/24 04:53

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bobby2128

2018/10/24 06:03

スマートな方法のご説明をいただきありがとうございました。 非常にわかりやすかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問