2017-10-04 64 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)