2017-10-04 63 views
0

我有12個數據幀包含環境數據 - 每個數據幀在其中有9934行和38列的不同月份數據。在python中遍歷內存中的所有數據幀

爲了使我的代碼儘可能簡化,我想創建一個for循環,它循環遍歷內存中的所有數據框並執行一個任務,例如設置每個數據幀的索引。

我試圖通過在內存中創建所有dataframes的列表:

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

然而,當我再嘗試:

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

我得到的錯誤信息:

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

有誰知道我可以循環遍歷內存中的這12個數據幀中的每一個,編輯它們(例如設置索引),然後sa並且轉移到下一個?

+1

列表中的文件和不是文件本身的名稱。將它們作爲字典存儲,其中鍵是文件名併爲文件本身賦值。 – ShreyasG

+0

然後,我需要繼續將所有文件與單獨文件(包含每個區域的東部和北部)合併,並計算多個列的平均值。如果數據是字典格式,我還可以這樣做嗎? – Annie

+1

當然,你可以。如果您打算將所有情況合併到一起,那麼爲何不預先合併它們,然後執行數據框架明智的操作? – ShreyasG

回答

0

我確定最好的做法是以某種數據結構(例如字典)來存儲數據框,但如果您確實想要遵循當前的方法,則需要在您的元素上使用eval列表,因爲這些是你的數據幀變量的名字。

類似的東西:

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