【发布时间】:2020-02-03 04:25:32
【问题描述】:
我创建了一个循环,在其中迭代文件夹中的 (csv) 文件,将它们读入数据帧字典并以 csv 文件命名(例如,file1.csv 变为 file1_df)。我对数据做了一些工作并生成新行,然后我尝试将部分数据帧子集到一个新的数据帧(file1_df2)中。我想稍后在字典之外引用这些数据框。
df_dict = {}
for file in os.listdir(datadir): # Loop over the files in that folder (only has CSV files)
df_name = file[:-4] + '_df' # Trim off .csv to name the dataframe
df_dict[df_name] = pd.read_csv(os.path.join(datadir, file))
是否可以按名称引用这些数据框?所以以后我可以打电话给file1_df2而不是df_dict["file1_df2"]?
本质上,我在问与here 相同的问题。看起来他也没有得到这个答案,所以我认为这可能是不可能的,但我还没有找到明确表示不是的答案。
我知道这在 SAS 和 Stata 等语言中是可能的,但我从未弄清楚如何在 Python 中做到这一点。在这些语言中,您可以将占位符变量直接插入某事物的名称中。
/* In SAS */
%let param = test1
libname path "C:\User\¶m."
proc sql;
create ¶m._df as
select * from path.¶m.
quit;
/* In Stata */
foreach i in file1 file2 {
import delimited "`i'.csv", clear
save "`i'.dta", replace
}
等等。如果这是不可能,我想肯定地知道这一点。谢谢!
【问题讨论】:
-
有可能但不是个好主意,请查看stackoverflow.com/a/6181959/11220780
-
可能 - 是的,例如
exec函数:docs.python.org/3.5/library/functions.html#exec 推荐 - 而不是 - 因为您将如何以编程方式知道哪些名称存在,哪些不存在。 -
知道它是可能的和不推荐的(以及为什么不推荐)也是很好的信息。谢谢你的资源。
标签: python python-3.x pandas dataframe dictionary