我有一个列表,每个条目都是一个公司名称
companies = ['AA', 'AAPL', 'BA', ....., 'YHOO']
我想为列表中的每个条目创建一个新的数据框。
就像是
(伪代码)
for c in companies:
c = pd.DataFrame()
我已经寻找一种方法来做到这一点,但找不到。有任何想法吗?
只是为了强调我对 @maxymoo 的回答的评论,这几乎总是一个坏主意(“代码气味") 将名称动态添加到 Python 命名空间。原因有很多,最重要的是:
-
创建的名称可能很容易与逻辑已使用的变量发生冲突。
-
由于名称是动态创建的,因此您通常还会使用动态技术来检索数据。
这就是该语言中包含字典的原因。正确的操作方法是:
d = {}
for name in companies:
d[name] = pd.DataFrame()
现在你可以写一个听写理解表达式做同样的事情,但有些人发现它的可读性较差:
d = {name: pd.DataFrame() for name in companies}
Once d
被创建了DataFrame
对于公司x
可以检索为d[x]
,这样您就可以很容易地查找特定公司。要对所有公司进行操作,您通常会使用如下循环:
for name, df in d.items():
# operate on DataFrame 'df' for company 'name'
在 Python 2 中你可以更好地编写
for name, df in d.iteritems():
因为这避免了实例化列表(name, df)
元组
那.items()
在旧版本中创建。
现在这在很大程度上具有历史意义,尽管会有
当然,Python 2 应用程序仍然存在并且需要
(希望偶尔)维护。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)