从多个数据帧生成列表

时间:2016-03-01 11:37:14

标签: python pandas matplotlib

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

您可以使用DataFrame列表完全避免此问题(例如data) 而不是使用编号变量(data1data2data3等。)

诀窍是避免首先创建编号变量。 如果你有表格的代码

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

尝试用

之类的东西替换它
data = []
data.append(...)
data.append(...)
data.append(...)

或者更好的是,使用列表推导或for循环来定义data。有关更具体的建议,请向我们展示定义编号变量的代码。

然后你可以用

循环数据框架
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()的这种使用仅仅是解决其他人造成的麻烦的一种解决方法。当(列表的)简单整数索引应该足够时,使用字符串格式来查找变量名称并不是很好的编程风格。最好的解决方案是说服某人停止使用编号变量,而是将值传递到列表中。