2017-10-04 14 views
0

私は環境データを含む12のデータフレームを持っています。各データフレームには9934行と38列のデータが入っています。Pythonでメモリ内のすべてのデータフレームをループする

私のコードをできるだけ効率的にするために、私はメモリ内のすべてのデータフレームをループしてループを作成し、それらのタスクを実行します。各データフレームのインデックスを設定します。私は、しようとすると、しかし

alldfs = [var for var in dir() if isinstance(eval(var), pd.core.frame.DataFrame)] 

私は介してメモリ内のすべてのデータフレームのリストを作成しようとした

AttributeError: 'str' object has no attribute 'set_index' 

for df in alldfs: 
    df.set_index(['LABEL'], inplace = True) 

が、私はエラーメッセージが表示されます

誰も私がこれらの12のデータフレームをメモリ上でループする方法を知っていますか、それらを編集する(例えばインデックスを設定する)、そして次にsa veと次へ移動しますか?

+1

あなたのリストには、ファイルの名前ではなく、ファイルそのものを持っています。キーがファイル名で、ファイル自体を評価する代わりに、それらを辞書として格納します。 – ShreyasG

+0

次に、すべてのファイルを別々のファイル(各エリアのeastingsとnorthingsを含む)とマージし、いくつかの列の平均を計算する必要があります。データが辞書形式の場合でもこれを行うことはできますか? – Annie

+1

もちろん、可能です。どんな場合でもそれらをマージしようとするなら、それらを先にマージしてから、データフレームワイズ操作を実行してみてください。 – ShreyasG

答えて

0

データフレームをある種のデータ構造(辞書など)に保存することをお勧めしますが、現在の方法に本当に従うことを望むのであれば、あなたの要素にevalを使用する必要がありますこれはデータフレーム変数の名前であるためです。そのような

何か:

for df_name in alldfs: 
    eval(df_name).set_index(['LABEL'], inplace = True) 
関連する問題