我有几个名为data1,data2,data3,data4,... data100的数据框。如何将它们存储在列表中,以便我能够使用for循环绘制它们。
提前致谢。
答案 0 :(得分:1)
您遇到的问题是使用编号变量的症状。
您可以使用DataFrame列表完全避免此问题(例如data
)
而不是使用编号变量(data1
,data2
,data3
等。)
诀窍是避免首先创建编号变量。 如果你有表格的代码
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()
的这种使用仅仅是解决其他人造成的麻烦的一种解决方法。当(列表的)简单整数索引应该足够时,使用字符串格式来查找变量名称并不是很好的编程风格。最好的解决方案是说服某人停止使用编号变量,而是将值传递到列表中。