在几年前由天体物理学家用于数据处理的旧解释语言SuperMongo,现在已被Python取代,有可能做到这样的事情(为了清晰起见,我编写伪代码,而不是真正的SuperMongo) :
mylist = [bar,foo]
for df in mylist:
bar = pd.read_csv(df+".csv")
for i = 1 to n:
bar+"_"+i = bar * i
您已经抓住了这个想法:例如,您可以从循环中其他人的名称的串联创建实例(例如,Pandas DataFrame),或者构建指示文件名的字符串。我使用许多DataFrame,如果我可以循环它们,我的代码将更具可读性,防错并且易于编写。我有时会使用列表列表之类的东西:
my_list = [[df1, df1_something, df1_another_thing,"df1.csv"],
[df2, df2_something, df2_another_thing,"df2.csv"],
[dfothername, dfothername_something, dfothername_another_thing,"df1.csv"],
...
]
for df in my_list:
df[2]=some_function(df[1])
...
但它仍然不完美。
有没有办法实现我在python中伪代码中显示的内容?
编辑:问题在某种程度上是重复的。简而言之,你可以这样做:
dic = {}
for name in namelist:
dic[name]=pd.read_csv(name+".csv")
dic['othername']=pd.DataFrame(...)
for name in dic.keys():
dic[name+"_processed"]=process(dic[name])
或者,对于最后一行,取决于上下文中最方便的内容:
dic_processed = {}
for name in dic.keys():
dic_processed[name]=process(dic[name])