2016-03-01 84 views
-1

我有几个数据帧,分别命名为data1,data2,data3,data4,... data100。如何将它们存储在列表中,以便能够使用for循环绘制它们。从几个数据帧生成列表

在此先感谢。

+0

你可以像'l = [data1,data2,...]一样将它们加入列表中,然后遍历该列表,你可以绘制每个数据框 –

+0

@AntonProtopopov谢谢,或许更好的问题是如何创建列表具有大量数据框时的变量? – Sepehr

回答

1

您遇到的问题是使用编号变量的症状。

您可以通过使用DataFrames的 列表(例如data)而不是使用编号的变量(data1data2data3等)完全避免这个问题

关键是要避免在创建编号变量第一个地方。 如果你有以下形式的代码

data1 = ... 
data2 = ... 
data3 = ... 

尝试用东西来取代它像

data = [] 
data.append(...) 
data.append(...) 
data.append(...) 

或更好,使用列表理解或for循环定义data。要获得更具体的建议,请向我们展示定义编号变量的代码。

,那么你可以遍历所有的DataFrames与

for df in data: 
    df.plot(...) 

如果从定义编号的变量的一些原因,你不能阻止(别人?),那么你可以使用globals()(或locals())以编程方式访问编号变量:

g = globals() 
data = [g['data{}'.format(i)] for i in range(1, 101)] 

globals()返回字典,其键是字符串表示在全局命名空间中名称为 的离子。关联的值是绑定到 这些名称的Python对象。因此,您可以使用globals()根据这些变量名称的字符串表示查找绑定到 变量名称的值。 如果变量名是在本地(而不是全局)名称空间中定义的,则使用locals()

不过,尽量避免使用编号变量。 globals()的这种使用仅仅是解决其他人造成的麻烦的解决方法。当简单整数索引(列表)应该足够时,使用字符串格式查找变量名称并不是很好的编程风格。最好的解决方案是说服别人停止使用编号变量,并将其传递到列表中。

+0

问题是我无法控制数据的存储方式。我同意从列表中绘制列表和绘图是合理的,但如果数据帧的数量足够大,则生成该列表是一个问题。 – Sepehr